Copyright(C) 1994 Terumasa KODAKA , Takeshi KONO
■MS-DOS拡張機能呼び出し
PC-9800用MS-DOSの製品一覧を表に示す。
表 PC-9800用MS-DOS一覧
-------------+-------+-------------------------------------
製品名 |MS-DOS |対応機種
|Version|
-------------+-------+-------------------------------------
PS98-111 |1.25 |ノーマル専用
PS98-121 |2.0 |ノーマル専用
PS98-122 |2.0 |ノーマル専用
PS98-123 |2.0 |ノーマル専用
PS98-XA121 |2.0 |ハイレゾ専用(*1)
PS98-XL121 |2.0 |ハイレゾ専用(*1)
PS98-125 |3.1 |ノーマル専用
PS98-127 |3.1 |ノーマル専用
PS98-129 |3.1 |ノーマル専用
PS98-XA125 |3.1 |ハイレゾ専用
PS98-XL125 |3.1 |ハイレゾ専用(*1)
PS98-LT125 |3.1 |PC-98LT内蔵
PS98-HA125 |3.1 |PC-98HA内蔵
PS98-011 |3.1 |ノーマル・ハイレゾ両用
PS98-013 |3.3 |ノーマル・ハイレゾ両用
PS98-015 |3.3A |ノーマル・ハイレゾ両用
PS98-017 |3.3B |ノーマル・ハイレゾ両用
PS98-H1001-x1|3.3B |ノーマル・ハイレゾ両用,PC-H98専用(*1)
PS98-019 |3.3C |ノーマル・ハイレゾ両用
PS98-H1001-x2|3.3C |ノーマル・ハイレゾ両用,PC-H98専用(*1)
PS98-1002-x2 |3.3D |ノーマル・ハイレゾ両用,PC-H98対応
|3.3D-R |PC-9801NL内蔵(*2)
PS98-1003-x1 |5.0 |ノーマル・ハイレゾ両用,PC-H98対応
PS98-1003-x2 |5.0A |ノーマル・ハイレゾ両用,PC-H98対応
|5.0A-H |ハードディスクモデルインストール版(*2,*3)
|5.0A-H |1.44MB FDD対応機付属版(*2)
-------------+-------+-------------------------------------
*1: この印のバージョンについては解析を行っていない。
*2: 特に断りのない限り、3.3D,5.0Aと同じ。
*3: PC-9801NAのハードディスクモデル付属版は1.44MB非対応。
INT DCh - Function 00〜08h
分類 拡張MS-DOS
名前 機能なし
対象 MS-DOS 1.25(PS98-111):IO.SYS
MS-DOS 2.0(all):IO.SYS
MS-DOS 3.1(all):IO.SYS
MS-DOS 3.1(PC-98LT・HA):IO.SYS
MS-DOS 3.3(all):IO.SYS
MS-DOS 5.0, 5.0A:IO.SYS
入力 CL=00〜08h
出力 レジスタ変化なし
解説 o 機能なし
関連
INT DCh - Function 09h Subfunction 0000h
分類 拡張MS-DOS
名前 SCSIデバイスタイプの取得
Undocumented
対象 MS-DOS 3.3D:IO.SYS
MS-DOS 5.0, 5.0A:IO.SYS
入力 CL=09h
AX=0000h
DS:DX=バッファアドレス(バッファサイズ8バイト)
出力 レジスタ変化なし
バッファ内容
-------+-------------------------------------
オフセット |内容
-------+-------------------------------------
+00h |SCSI ID 0 のデバイスタイプ値
+01h |SCSI ID 1 のデバイスタイプ値
+02h |SCSI ID 2 のデバイスタイプ値
+03h |SCSI ID 3 のデバイスタイプ値
+04h |SCSI ID 4 のデバイスタイプ値
+05h |SCSI ID 5 のデバイスタイプ値
+06h |SCSI ID 6 のデバイスタイプ値
+07h |SCSI ID 7 のデバイスタイプ値
-------+-------------------------------------
---------------+-----------------------------
デバイスタイプ値 |意味
---------------+-----------------------------
00h |ハードディスク
01h |テープユニット
05h |CD-ROM
07h |3.5"MO
84h |5"MO
FFh |デバイスなし
---------------+-----------------------------
解説 o 接続されているSCSI機器のデバイスタイプ値(機器の種類を表す値)の
リストをDS:DXで指定したメモリに書き込む。
デバイスタイプ値は、正確には、SCSIの標準INQUIRYコマンドで得られる
データの先頭バイトである(bit 7〜5はPeripheral Qualifier、bit 4〜0は
Peripheral Device Type)。
o MS-DOSは、起動時に接続されているSCSI機器を調べ、その情報をワーク
エリアに保存する。このファンクションは、DS:DXで指定されたアドレスに
ワークエリアの情報をコピーするだけである。このため、MS-DOS起動時に
電源の入っていなかったSCSI機器は「デバイスなし」になる。
u MS-DOSが起動時にSCSI機器の接続チェックをするとき、ID番号0,1,2,…,7の
順番で行う。途中、機器の接続されていないID番号があると、それ以降の
チェックは行わない。それ以降のIDに対応するワークエリアは、
「デバイスなし」の状態になる。機器の接続されていないID番号に対して
接続チェックを行うと時間がかかるので、MS-DOSの起動時間が長くならない
ようにするための措置である。
ただし、ハードディスクは例外で、0から連続したID値に存在していなく
ても常に正しく認識される。ハードディスクの接続状況はBIOSによって
0000:0482hにセットいるため、MS-DOSはそこを参照してワークエリアを
設定するので、MS-DOSの起動時間に影響を与えないためである。
o MS-DOS 3.3Dでも、3.5"MOが接続されていると「07h」の値が得られる。
しかし、MS-DOSのドライブとして認識されるわけではない。
関連 0000:0460h
■MS-DOS 3.3D
0060:1D3B〜1D42h
■MS-DOS 5.0, 5.0A
0060:1DBB〜1DC2h
INT DCh - Function 09h Subfunction 0001h
分類 拡張MS-DOS
名前 不明
Undocumented
対象 MS-DOS 3.3D:IO.SYS
MS-DOS 5.0, 5.0A:IO.SYS
入力 CL=09h
AX=0001h
DL=MOドライブのSCSI ID(DA/UAではない)
出力 AX=リターンコード
0000h MOドライブが指定された
FFFFh 指定されたSCSI IDはMOではない
解説 o 詳細不明。DLで指定されたSCSI IDがMOドライブのとき正常終了し、それ
以外のとき異常終了する。
o MOに関する情報を格納しているエリアを参照し、同エリアの一部に
定数の書き込みを行っているが、その動作の意味は不明。
o MS-DOS 3.3Dは、5"MOのみサポート。3.5"MOは認識しない。
u MS-DOS 3.3Dは、異常終了のリターンコードを返さない。異常終了のとき、
AX=0001hのままリターンする。
関連 ■MS-DOS 3.3D
0060:9178〜9197h
■MS-DOS 5.0, 5.0A
0060:026A〜02A9h
INT DCh - Function 09h Subfunction 0010h,0011h
分類 拡張MS-DOS
名前 MOドライブのイジェクトロック/アンロック
Undocumented
対象 MS-DOS 5.0, 5.0A:IO.SYS
入力 CL=09h
AX=サブファンクション番号(動作指定)
0010h イジェクトロックする
0011h イジェクトアンロックする
DL=MOドライブのDA/UA(SCSI IDではない)
出力 AX=リターンコード
0000h 正常終了 イジェクトロックカウンタを加算/減算した
0001h イジェクトロックされていない(Subfunction 0011hのみ)
0002h イジェクトロック/アンロック処理に失敗した
0003h イジェクトロック/アンロック処理に失敗した
FFFFh 指定されたDA/UAはMOではない
解説 o 指定されたMOドライブのイジェクトロック/アンロックを行う。
o 「イジェクトロック」を実行する毎にロック回数を示すカウンタが
インクリメントされ、「イジェクトアンロック」を実行する毎に
同カウンタがデクリメントされる。デクリメント時にカウンタが
0になったら、イジェクトロックが解除される。
o ロック回数はドライブ毎に管理されている。
o MOメディアをドライブにセットした直後に「イジェクトロック」を実行
しても正常終了しない。MOにアクセスするか、本ファンクションを何回か
実行すれば正常終了する。
o 実際にイジェクトロックが解除されるタイミングでMOドライブに異常が
あると、リターンコードに0002h,0003hが返る。
o MOメディアが入っていないときにも正常終了しない。
o リターンコードの0002h,0003hの差異は不明。
関連 0060:03E9h
INT DCh - Function 0Ah(ノーマル)
分類 拡張MS-DOS
名前 RS-232Cポートの初期化
Undocumented
対象 ノーマル
MS-DOS 1.25(PS98-111):IO.SYS
MS-DOS 2.0(all):IO.SYS
MS-DOS 3.1(all):IO.SYS
MS-DOS 3.1(PC-98LT・HA):IO.SYS
MS-DOS 3.3(all):IO.SYS
MS-DOS 5.0, 5.0A:IO.SYS
入力 CL=0Ah
出力 ■[MS-DOS 3.1(PS98-011), 3.3(all), 5.0,5.0A]
AX=リターンコード
0000 : 正常終了
無変化: RSDRV.SYSが組み込まれていない
■[MS-DOS 1.25, 2.0(all), 3.1(PS98-125・127・129)]
レジスタ変化なし
解説 o RS-232Cチャネル0のハードウェアとワークエリアを初期化する。
以降、AUXデバイスを使用した入出力が可能になる。
o 通信パラメータは、0060:0068h(WORD)の内容に従う。この2バイトには、
起動時にメモリスイッチ1,2の内容がコピーされている。また、SPEED
コマンドでパラメータを変更したときにも、その設定が反映する。
o 受信バッファは256バイト確保される。
u PS98-011以降のMS-DOSプログラマーズリファレンスマニュアルでは
ハイレゾのみのファンクションとなっているが、ノーマルモードにも
存在する。ただし、ハイレゾモードとは入力が異なる。
MS-DOS 3.1(PS98-011)以降では、ノーマル・ハイレゾモードで共通に
使用できるINT DCh - Function 0Ehが用意されたため、
このファンクションは互換性のために残されているだけである。
u PS98-127以降のMS-DOSでは、RS-232CドライバがIO.SYSから独立して
いる。この場合、RSDRV.SYSを組み込まないと本ファンクションは
無動作になる。
PS98-127・129では、RSDRV.SYSが組み込まれているか否かをこの
ファンクションの実行結果から判別することはできない。
RSDRV.SYSが組み込まれているかどうかは0060:1802hを調べればわかる
(0000hなら組み込まれていない)。しかし、IO.SYS内にRS-232Cドライバが
組み込まれているシステムではこのアドレスは常に0000hになっているので、
MS-DOSのバージョンを判定しなければならなくなる。
u 主な処理内容は以下の通り。
INT 19h - Function 00h(RSDRV)を実行する。
PS98-011以降の製品では、このINT 19h実行後のAHレジスタの
値に従って、0000hかFFFFhのリターンコードを返す処理が入っているが、
INT 19h - Function 00h(RSDRV)は常に正常終了するため、実際にはFFFFhの
リターンコードが返ることはない。
u MS-DOS 1.25ではワークエリアのアドレス等が異なる。
u MS-DOS 5.0Aの一部バージョン(PC-9821Af・Ne, PC-9801NX/C・P付属版など)
では、SPEED.EXEを実行してもRS-232C割り込み(INT 0Ch)が割り込み
コントローラによってマスクされたままになる場合がある。
このファンクションを直接実行した場合は、そのようなことは起らない。
関連 INT DCh - Function 0Eh Subfunction 00h(ノーマル)
0060:0068h
0060:1802h
INT DCh - Function 0Ah(ハイレゾ)
分類 拡張MS-DOS
名前 RS-232Cポートの初期化
対象 ハイレゾ
MS-DOS 2.0(PS98-XA121・XL121):IO.SYS
MS-DOS 3.1(all):IO.SYS
MS-DOS 3.3(all):IO.SYS
MS-DOS 5.0, 5.0A:IO.SYS
入力 CL=0Ah
DH=通信パラメータ指定
bit 7,6:ストップビット長
11b=2ビット
10b=1.5ビット
01b=1ビット
bit 5 :パリティ指定
1=偶数
0=奇数
bit 4 :パリティ有無
1=あり
0=なし
bit 3,2:データビット長
11b=8ビット
10b=7ビット
01b=6ビット
00b=5ビット
bit 1 :0を指定
bit 0 :Xフローコントロール
1=あり
0=なし
DL=チャネル番号、通信速度指定
bit 7〜4:チャネル番号
0010b=チャネル2(RS-232C拡張回線)
0001b=チャネル1(RS-232C拡張回線)
0000b=チャネル0(本体内蔵RS-232C)
bit 3〜0:通信速度
1001b=19200bps■19200bps対応機のみ
1000b= 9600bps
0111b= 4800bps
0110b= 2400bps
0101b= 1200bps
0100b= 600bps
0011b= 300bps
0010b= 150bps
0001b= 75bps
0000b= 無効
* 通信速度はチャネル0でのみ指定できる。
上記以外の値を設定すると1200bpsになる
AH=DLと同じ値■[PS98-011以降]
* DLと同じ値をセットする必要がある
出力 AX=リターンコード
0000h 初期化終了
FFFFh RS-232C拡張インターフェースボードがないのにチャネル1,2を
初期化しようとした
無変化 RSDRV.SYSが組み込まれていない
解説 o RS-232Cポートのハードウェアとワークエリアを初期化する。
以降、AUX,AUX1,AUX2デバイスを使用した入出力が可能になる。
o 受信バッファは256バイト確保される。
o ノーマルモードとは入力が異なる。
u PS98-011以降のMS-DOSでは、AHにDLと同じ値をセットして実行しなければ
ならない。このファンクションの処理の最初で、DLからAHへのコピーを
行っていないため。
o RS-232Cドライバ(RSDRV.SYS)がIO.SYSから独立しているシステムでは、
RSDRV.SYSを組み込まないと本ファンクションは無動作になる(AXは無変化)。
処理ルーチン自体はIO.SYS内にある。INT 19h - Function 00h(BIOS)を
利用して初期化の処理を行う。
u 19200bps対応機かどうかの判別は、FFE8:0002hを参照して行う。
本体が19200bps対応機ならば、98ハイレゾボード(PC-9821A-E02)のハイレゾ
モードでも、BIOSで19200bpsが使用できる。
関連 INT DCh - Function 0Eh Subfunction 00h(ハイレゾ)
0060:0068h
0060:1802h
FFE8:0002h bit 2
INT DCh - Function 0Bh
分類 拡張MS-DOS
名前 機能なし
Undocumented
対象 MS-DOS 1.25(PS98-111):IO.SYS
MS-DOS 2.0(all):IO.SYS
MS-DOS 3.1(all):IO.SYS
MS-DOS 3.1(PC-98LT・HA):IO.SYS
MS-DOS 3.3(all):IO.SYS
MS-DOS 5.0, 5.0A:IO.SYS
入力 CL=0Bh
出力 レジスタ変化なし
解説 o なにもせずリターンする。
関連
INT DCh - Function 0Ch Subfunction 0000〜00FFh
分類 拡張MS-DOS
名前 キーの取得(プログラマブルキーの設定内容の取得)
対象 MS-DOS 1.25(PS98-111):IO.SYS
MS-DOS 2.0(all):IO.SYS
MS-DOS 3.1(all):IO.SYS
MS-DOS 3.1(PC-98LT・HA):IO.SYS
MS-DOS 3.3(all):IO.SYS
MS-DOS 5.0, 5.0A:IO.SYS
入力 CL=0Ch
AX=サブファンクション番号(キー指定値)
DS:DX=データバッファアドレス
出力 レジスタ変化なし
解説 o ファンクションキー、矢印キーなどのプログラマブルキーに設定されている
キー設定データを、DS:DXで指定したメモリに書き込む。
o サブファンクション番号(キー指定値)については、[キー指定値と
対応するキー一覧]を参照、バッファ構造とバッファのサイズは、
表[プログラマブルキー設定データのバッファ構造]を参照。
o MS-DOSのバージョンによって、サポートしているサブファンクション
(キー指定)の範囲が異なる。サポート範囲は表[MS-DOSバージョン毎の
サブファンクションサポート範囲]を参照。
関連 INT DCh - Function 0Dh
表 [キー指定値と対応するキー一覧]
---------------+---------------------------------------------------
キー指定値 |対応するキー
---------------+---------------------------------------------------
0000h |[f・1]〜[f・10],[SHIFT]+[f・1]〜[SHIFT]+[f・10],
|[ROLL UP],[ROLL DOWN],[INS],[DEL],[↑],[←],[→],[↓],
|[HOME/CLR],[HELP],[SHIFT]+[HOME/CLR]
0001〜000Ah |[f・1]〜[f・10]
000B〜0014h |[SHIFT]+[f・1]〜[SHIFT]+[f・10]
0015h |[ROLL UP]
0016h |[ROLL DOWN]
0017h |[INS]
0018h |[DEL]
0019h |[↑]
001Ah |[←]
001Bh |[→]
001Ch |[↓]
001Dh |[HOME/CLR](XAキーボード:[CLR])
001Eh |[HELP]
001Fh |[SHIFT]+[HOME/CLR](XAキーボード:[HOME])
0020〜0024h |[vf・1]〜[vf・5]
0025〜0029h |[SHIFT]+[vf・1]〜[vf・5]
002A〜0033h |[CTRL]+[f・1]〜[f・10]
0034〜0038h |[CTRL]+[vf・1]〜[vf・5]
0039h |[CTRL]+[XFER]/[NFER] (Undocumented)
003Ah |[CTRL]+[XFER]/[NFER],[CTRL]+[f・1]〜[f・10]
|(Undocumented)
00FFh |[f・1]〜[f・10],[vf・1]〜[vf・5],
|[SHIFT]+[f・1]〜[SHIFT]+[f・10],[SHIFT]+[vf・1]〜[vf・5],
|[ROLL UP],[ROLL DOWN],[INS],[DEL],[↑],[←],[→],[↓],
|[HOME/CLR],[HELP],[SHIFT]+[HOME/CLR],
|[CTRL]+[f・1]〜[f・10],[CTRL]+[vf・1]〜[vf・5]
---------------+---------------------------------------------------
表 [MS-DOSバージョン毎のキー指定値サポート範囲]
---------------+---+---+---+---+---+---+---+---+-----+
キー指定値 |MS-DOSバージョン(PS98-XXX)
|111|121|122|123|125|127|129|011|XA125
---------------+---+---+---+---+---+---+---+---+-----+
0000〜001Fh |○ |○ |○ |○ |○ |○ |○ |○ | ○
0020〜0029h |× |× |× |× |× |× |× |○ | ○
002A〜0033h |× |× |× |× |○ |○ |○ |○ | △
0034〜0038h |× |× |× |× |× |× |× |○ | △
0039h |× |× |× |× |× |○ |○ |○ | ×
003Ah |× |× |× |× |○ |○ |○ |○ | ×
00FFh |× |× |× |× |× |× |× |○ | ○
---------------+---+---+---+---+---+---+---+---+-----+
* PC-98LT・HAはPS98-127と同じ。
* MS-DOS 3.3(all), 5.0, 5.0AはPS98-011と同じ。
* PS98-XA125の△印では、次のようになる。
キー指定値002B〜0033hで[CTRL]+[f・1]〜[f・9]が指定される。
キー指定値0035〜0038hで[CTRL]+[vf・1]〜[vf・4]が指定される。
表 [プログラマブルキー設定データのバッファ構造]
(1) キー指定値 0000h
-------+------------------+--------------------------------------
オフセット |キー種別 |キー設定データの大きさ
-------+------------------+--------------------------------------
+0000h |[f・1] |16バイト(15バイトのキー設定データ+00h)
+0010h |[f・2] |16バイト(15バイトのキー設定データ+00h)
+0020h |[f・3] |16バイト(15バイトのキー設定データ+00h)
+0030h |[f・4] |16バイト(15バイトのキー設定データ+00h)
+0040h |[f・5] |16バイト(15バイトのキー設定データ+00h)
+0050h |[f・6] |16バイト(15バイトのキー設定データ+00h)
+0060h |[f・7] |16バイト(15バイトのキー設定データ+00h)
+0070h |[f・8] |16バイト(15バイトのキー設定データ+00h)
+0080h |[f・9] |16バイト(15バイトのキー設定データ+00h)
+0090h |[f・10] |16バイト(15バイトのキー設定データ+00h)
+00A0h |[SHIFT]+[f・1] |16バイト(15バイトのキー設定データ+00h)
+00B0h |[SHIFT]+[f・2] |16バイト(15バイトのキー設定データ+00h)
+00C0h |[SHIFT]+[f・3] |16バイト(15バイトのキー設定データ+00h)
+00D0h |[SHIFT]+[f・4] |16バイト(15バイトのキー設定データ+00h)
+00E0h |[SHIFT]+[f・5] |16バイト(15バイトのキー設定データ+00h)
+00F0h |[SHIFT]+[f・6] |16バイト(15バイトのキー設定データ+00h)
+0100h |[SHIFT]+[f・7] |16バイト(15バイトのキー設定データ+00h)
+0110h |[SHIFT]+[f・8] |16バイト(15バイトのキー設定データ+00h)
+0120h |[SHIFT]+[f・9] |16バイト(15バイトのキー設定データ+00h)
+0130h |[SHIFT]+[f・10] |16バイト(15バイトのキー設定データ+00h)
+0140h |[ROLL UP] |6バイト(5バイトのキー設定データ+00h)
+0146h |[ROLL DOWN] |6バイト(5バイトのキー設定データ+00h)
+014Ch |[INS] |6バイト(5バイトのキー設定データ+00h)
+0152h |[DEL] |6バイト(5バイトのキー設定データ+00h)
+0158h |[↑] |6バイト(5バイトのキー設定データ+00h)
+015Eh |[←] |6バイト(5バイトのキー設定データ+00h)
+0164h |[→] |6バイト(5バイトのキー設定データ+00h)
+016Ah |[↓] |6バイト(5バイトのキー設定データ+00h)
+0170h |[HOME/CLR] |6バイト(5バイトのキー設定データ+00h)
+0176h |[HELP] |6バイト(5バイトのキー設定データ+00h)
+017Ch |[SHIFT]+[HOME/CLR]|6バイト(5バイトのキー設定データ+00h)
-------+------------------+--------------------------------------
(2) キー指定値 0001〜0014h,0020〜0039h
-------+--------------------------------------
オフセット |キー設定データの大きさ
-------+--------------------------------------
+0000h |16バイト(15バイトのキー設定データ+00h)
-------+--------------------------------------
(3) キー指定値 0015〜001Fh
-------+------------------------------------
オフセット |キー設定データの大きさ
-------+------------------------------------
+0000h |6バイト(5バイトのキー設定データ+00h)
-------+------------------------------------
(4) キー指定値 003Ah
-------+--------------------+--------------------------------------
オフセット |キー種別 |キー設定データの大きさ
-------+--------------------+--------------------------------------
+0000h |[CTRL]+[XFER]/[NFER]|16バイト(15バイトのキー設定データ+00h)
+0010h |[CTRL]+[f・1] |16バイト(15バイトのキー設定データ+00h)
+0020h |[CTRL]+[f・2] |16バイト(15バイトのキー設定データ+00h)
+0030h |[CTRL]+[f・3] |16バイト(15バイトのキー設定データ+00h)
+0040h |[CTRL]+[f・4] |16バイト(15バイトのキー設定データ+00h)
+0050h |[CTRL]+[f・5] |16バイト(15バイトのキー設定データ+00h)
+0060h |[CTRL]+[f・6] |16バイト(15バイトのキー設定データ+00h)
+0070h |[CTRL]+[f・7] |16バイト(15バイトのキー設定データ+00h)
+0080h |[CTRL]+[f・8] |16バイト(15バイトのキー設定データ+00h)
+0090h |[CTRL]+[f・9] |16バイト(15バイトのキー設定データ+00h)
+00A0h |[CTRL]+[f・10] |16バイト(15バイトのキー設定データ+00h)
-------+--------------------+--------------------------------------
(5) キー指定値 00FFh
-------+------------------+--------------------------------------
オフセット |キー種別 |キー設定データの大きさ
-------+------------------+--------------------------------------
+0000h |[f・1] |16バイト(15バイトのキー設定データ+00h)
+0010h |[f・2] |16バイト(15バイトのキー設定データ+00h)
+0020h |[f・3] |16バイト(15バイトのキー設定データ+00h)
+0030h |[f・4] |16バイト(15バイトのキー設定データ+00h)
+0040h |[f・5] |16バイト(15バイトのキー設定データ+00h)
+0050h |[f・6] |16バイト(15バイトのキー設定データ+00h)
+0060h |[f・7] |16バイト(15バイトのキー設定データ+00h)
+0070h |[f・8] |16バイト(15バイトのキー設定データ+00h)
+0080h |[f・9] |16バイト(15バイトのキー設定データ+00h)
+0090h |[f・10] |16バイト(15バイトのキー設定データ+00h)
+00A0h |[vf・1] |16バイト(15バイトのキー設定データ+00h)
+00B0h |[vf・2] |16バイト(15バイトのキー設定データ+00h)
+00C0h |[vf・3] |16バイト(15バイトのキー設定データ+00h)
+00D0h |[vf・4] |16バイト(15バイトのキー設定データ+00h)
+00E0h |[vf・5] |16バイト(15バイトのキー設定データ+00h)
+00F0h |[SHIFT]+[f・1] |16バイト(15バイトのキー設定データ+00h)
+0100h |[SHIFT]+[f・2] |16バイト(15バイトのキー設定データ+00h)
+0110h |[SHIFT]+[f・3] |16バイト(15バイトのキー設定データ+00h)
+0120h |[SHIFT]+[f・4] |16バイト(15バイトのキー設定データ+00h)
+0130h |[SHIFT]+[f・5] |16バイト(15バイトのキー設定データ+00h)
+0140h |[SHIFT]+[f・6] |16バイト(15バイトのキー設定データ+00h)
+0150h |[SHIFT]+[f・7] |16バイト(15バイトのキー設定データ+00h)
+0160h |[SHIFT]+[f・8] |16バイト(15バイトのキー設定データ+00h)
+0170h |[SHIFT]+[f・9] |16バイト(15バイトのキー設定データ+00h)
+0180h |[SHIFT]+[f・10] |16バイト(15バイトのキー設定データ+00h)
+0190h |[SHIFT]+[vf・1] |16バイト(15バイトのキー設定データ+00h)
+01A0h |[SHIFT]+[vf・2] |16バイト(15バイトのキー設定データ+00h)
+01B0h |[SHIFT]+[vf・3] |16バイト(15バイトのキー設定データ+00h)
+01C0h |[SHIFT]+[vf・4] |16バイト(15バイトのキー設定データ+00h)
+01D0h |[SHIFT]+[vf・5] |16バイト(15バイトのキー設定データ+00h)
+01E0h |[ROLL UP] |6バイト(5バイトのキー設定データ+00h)
+01E6h |[ROLL DOWN] |6バイト(5バイトのキー設定データ+00h)
+01ECh |[INS] |6バイト(5バイトのキー設定データ+00h)
+01F2h |[DEL] |6バイト(5バイトのキー設定データ+00h)
+01F8h |[↑] |6バイト(5バイトのキー設定データ+00h)
+01FEh |[←] |6バイト(5バイトのキー設定データ+00h)
+0204h |[→] |6バイト(5バイトのキー設定データ+00h)
+020Ah |[↓] |6バイト(5バイトのキー設定データ+00h)
+0210h |[HOME/CLR] |6バイト(5バイトのキー設定データ+00h)
+0216h |[HELP] |6バイト(5バイトのキー設定データ+00h)
+021Ch |[SHIFT]+[HOME/CLR]|6バイト(5バイトのキー設定データ+00h)
+0222h |[CTRL]+[f・1] |16バイト(15バイトのキー設定データ+00h)
+0232h |[CTRL]+[f・2] |16バイト(15バイトのキー設定データ+00h)
+0242h |[CTRL]+[f・3] |16バイト(15バイトのキー設定データ+00h)
+0252h |[CTRL]+[f・4] |16バイト(15バイトのキー設定データ+00h)
+0262h |[CTRL]+[f・5] |16バイト(15バイトのキー設定データ+00h)
+0272h |[CTRL]+[f・6] |16バイト(15バイトのキー設定データ+00h)
+0282h |[CTRL]+[f・7] |16バイト(15バイトのキー設定データ+00h)
+0292h |[CTRL]+[f・8] |16バイト(15バイトのキー設定データ+00h)
+02A2h |[CTRL]+[f・9] |16バイト(15バイトのキー設定データ+00h)
+02B2h |[CTRL]+[f・10] |16バイト(15バイトのキー設定データ+00h)
+02C2h |[CTRL]+[vf・1] |16バイト(15バイトのキー設定データ+00h)
+02D2h |[CTRL]+[vf・2] |16バイト(15バイトのキー設定データ+00h)
+02E2h |[CTRL]+[vf・3] |16バイト(15バイトのキー設定データ+00h)
+02F2h |[CTRL]+[vf・4] |16バイト(15バイトのキー設定データ+00h)
+0302h |[CTRL]+[vf・5] |16バイト(15バイトのキー設定データ+00h)
-------+------------------+--------------------------------------
* 設定時、キーに割り当てる設定データが一つのキーに割り当てられた
サイズよりも小さいとき、残りの部分は00hで埋める。
* 設定時、一つのキー設定データ末尾に00h以外の値を書き込んでも、その
データは無視される(00hが書かれているのと同じように取り扱われる)。
* ファンクションキーに設定したデータの先頭6文字は、画面最下行の
ファンクション表示部に表示される。ただし、ファンクションキーの
データの先頭(1バイト目)にFEhを置いたとき、2バイト目から6バイト
目の5バイトのデータは単に表示のみに使用され、キーを押したときに
入力される文字は7バイト目以降に設定されたデータになる。1バイト目の
FEhは空白として表示される。
* [CTRL]+[f・1]〜[vf・5]に設定したデータは、INT DCh - Function 0Fh
Subfunction 0000hを実行しなければ入力できない。
* [CTRL]+[XFER]/[NFER]に設定したデータは、INT DCh - Function 0Fh
Subfunction 0002hを実行しなければ入力できない。
INT DCh - Function 0Ch Subfunction 0100h
分類 拡張MS-DOS
名前 データキー割り当てバッファの内容の取得
対象 MS-DOS 3.1(PS98-011)
MS-DOS 3.3(all):IO.SYS
MS-DOS 5.0, 5.0A:IO.SYS
入力 CL=0Ch
AX=0100h
DS:DX=バッファアドレス(サイズ202hバイト)
出力 レジスタ変化なし
解説 o MS-DOS 3.1(PS98-011)以降のMS-DOSには、文字キー(英数記号カナ)を
押したとき、任意の文字列に置き換えて入力する機能が備わっている。
このファンクションは、その設定内容を読み出すことができる。
o バッファの構造は、[データキー割り当てバッファの構造]を参照。
DS:DXのオフセット000hには、設定されているデータキーの個数が書き込ま
れる。オフセット002h以降に、設定されているデータキーの個数分の
割り当てデータが書き込まれる。最後の割り当てデータの次には、
00hが書き込まれる。
o 1個の割り当てデータのオフセット00hには、その割り当てデータの全長が
書き込まれる。オフセット02hには、データキーのキャラクタコードが
書き込まれる。オフセット03h以降には、置き換える文字列が書き込まれる。
関連 INT DCh - Function 0Ch Subfunction 0101h
INT DCh - Function 0Dh Subfunction 0100h
INT DCh - Function 0Dh Subfunction 0101h
表 [データキー割り当てバッファの構造]
-------+--------------------------------------
オフセット |内容
-------+--------------------------------------
+000h |この後に続く割り当てデータの個数(WORD)
+002h |割り当てデータfirst
: | :
+xxxh |割り当てデータlast
+yyyh |00h
-------+--------------------------------------
* INT DCh - Function 0Dh Subfunction 0100hでデータキーの
設定を行うときには、オフセット000hにデータの個数をセット
する必要はない。読み出しのときには個数が書き込まれる。
表 [割り当てデータ1個分の構造]
----------+---------------+--------------------------------------------
オフセット |設定値の範囲 |内容
----------+---------------+--------------------------------------------
+00h(WORD)|0003〜0012h |この割り当てデータの全長(このバイトも含む)
+02h |00〜7Eh,A0〜DFh|データキーのキャラクタコード
+03h | |入力される文字列(1〜15バイト)
: | |(文字列の長さはオフセット+00hの値で決まる)
+zzh | |
----------+---------------+--------------------------------------------
* 設定時、割り当てデータの全長は、必ず18バイト以下に設定する。18
バイトを超える長さの設定をしてもエラーは返らず設定されてしまうが、
あまり長い文字列を設定すると暴走することがある。
INT DCh - Function 0Ch Subfunction 0101h
分類 拡張MS-DOS
名前 データキー割り当てバッファの残り容量の取得
対象 MS-DOS 3.1(PS98-011)
MS-DOS 3.3(all):IO.SYS
MS-DOS 5.0, 5.0A:IO.SYS
入力 CL=0Ch
AX=0101h
出力 AX=内部バッファの残り容量(初期値 0200h)
解説 o MS-DOS 3.1(PS98-011)以降のMS-DOSには、文字キー(英数記号カナ)を
押したとき、任意の文字列に置き換えて入力する機能が備わっている。
このファンクションは、その設定内容を格納している内部バッファの
残り容量を読み出すことができる。内部バッファの容量は512バイト。
関連 INT DCh - Function 0Ch Subfunction 0100h
INT DCh - Function 0Dh Subfunction 0100h
INT DCh - Function 0Dh Subfunction 0101h
INT DCh - Function 0Dh Subfunction 0000〜00FFh
分類 拡張MS-DOS
名前 キーの設定(プログラマブルキーの設定)
対象 MS-DOS 1.25(PS98-111):IO.SYS
MS-DOS 2.0(all):IO.SYS
MS-DOS 3.1(all):IO.SYS
MS-DOS 3.1(PC-98LT・HA):IO.SYS(PS98-127と同じ)
MS-DOS 3.3(all):IO.SYS
MS-DOS 5.0, 5.0A:IO.SYS
入力 CL=0Dh
AX=サブファンクション番号(キー指定値)
DS:DX=データバッファアドレス
出力 レジスタ変化なし
解説 o ファンクションキー、矢印キーなどのプログラマブルキーに、キー設定
データを設定する。
o サブファンクション番号(キー指定値)については、[キー指定値と
対応するキー一覧]を参照。バッファ構造とバッファのサイズは、
表[プログラマブルキー設定データのバッファ構造]を参照。
o MS-DOSのバージョンによって、サポートしているサブファンクション
(キー指定)の範囲が異なる。サポート範囲は表[MS-DOSバージョン毎の
サブファンクションサポート範囲]を参照。
u MS-DOS 2.0ではAX>=0020hで画面最下行のファンクション表示の再書き込み
を行う。ファンクション表示なしのときには書き込みしない。
関連 INT DCh - Function 0Ch
INT DCh - Function 0Dh Subfunction 0100h
分類 拡張MS-DOS
名前 データキー割り当てバッファの内容設定
対象 MS-DOS 3.1(PS98-011)
MS-DOS 3.3(all)
MS-DOS 5.0, 5.0A
入力 CL=0Dh
AX=0100h
DS:DX=データバッファアドレス
出力 レジスタ変化なし
解説 o MS-DOS 3.1(PS98-011)以降のMS-DOSには、文字キー(英数記号カナ)を
押したとき、任意の文字列に置き換えて入力する機能が備わっている。
このファンクションは、そのための設定を行う。
o このファンクションを実行すると、データキー割り当てバッファ全体を
置き換える。データを追加する場合は、
INT DCh - Function 0Dh Subfunction 0101hを利用するか、
INT DCh - Function 0Ch Subfunction 0100hでバッファにデータを
読み込んでから、その後ろに新しいデータを追加する必要がある。
o バッファの構造は、[データキー割り当てバッファの構造]を参照。
DS:DXのオフセット002h以降に、設定するデータキーの個数分の割り当て
データを書き込む。最後の割り当てデータの次には、00hを書き込む。
o 1個の割り当てデータのオフセット00hには、その割り当てデータの全長を
書き込む。オフセット02hには、データキーのキャラクタコードを
書き込む。オフセット03h以降には、置き換える文字列を書き込む。
関連 INT DCh - Function 0Ch Subfunction 0100h
INT DCh - Function 0Ch Subfunction 0101h
INT DCh - Function 0Dh Subfunction 0101h
INT DCh - Function 0Dh Subfunction 0101h
分類 拡張MS-DOS
名前 データキー割り当てバッファの割り当てエントリを一つ追加
対象 MS-DOS 3.1(PS98-011)
MS-DOS 3.3(all)
MS-DOS 5.0, 5.0A
入力 CL=0Dh
AX=0101h
DS:DX=データバッファアドレス(割り当てデータ1個分)
出力 AX=0000h
解説 o データキー割り当てバッファに割り当てを一つ追加するときに使用する。
o バッファの構造は、[割り当てデータ1個分の構造]を参照。
DS:DXのオフセット00hには、割り当てデータの全長を書き込む。オフセット
02hには、データキーのキャラクタコードを書き込む。オフセット03h以降
には、置き換える文字列を書き込む。
o データキーの割り当ては以下のエスケープシーケンスでも行える。
---------------------------------------------
エスケープシーケンス
---------------------------------------------
ESC+"["+<文字列>+"p"
---------------------------------------------
* <文字列>を指定するには、文字を引用符("または')で括って
直接記述する方法と、10進数のアスキーコードを;で区切って
並べる方法、およびそれらを混在させる方法がある。
以下の例は、どれも同じ設定を行っている。
(例:^[["!ABC"p,^[[33;65;66;67p,^[[21;"ABCDE"p)
* <文字列>の1文字目がデータキーのキャラクタコード、
2文字目以降が入力される文字列(1〜15バイト)。
u MS-DOSプログラマーズリファレンスマニュアルには正確な使用方法が
記載されていない。
u MS-DOS 3.1(PS98-011)では、このファンクションは正常動作しない。
MS-DOS 3.3, 3.3A, 3.3B, 3.3Cでは、以下のようになる。
複数のデータキーが登録されているとき、最後に登録した以外のデータ
キーを再登録すると、データキー割当バッファの内容が破壊され、
登録内容が無効になる。このようになったら、以後このファンクションで
データキーへの登録は行えない。INT DCh - Function 0Dh Subfunction 0102h
を実行してバッファの初期化を行えば再度登録できるようになる。
MS-DOS 3.3D, 5.0以降では、このようなことは起らない。
関連 INT DCh - Function 0Ch Subfunction 0100h
INT DCh - Function 0Ch Subfunction 0101h
INT DCh - Function 0Dh Subfunction 0100h
INT DCh - Function 0Dh Subfunction 0102h
分類 拡張MS-DOS
名前 データキー割り当てバッファのクリア
Undocumented
対象 MS-DOS 3.1(PS98-011):IO.SYS
MS-DOS 3.3(all):IO.SYS
MS-DOS 5.0, 5.0A:IO.SYS
入力 CL=0Dh
AX=0102h
出力 レジスタ変化なし
解説 o データキー割り当てバッファの登録内容を全てクリアする。
関連 INT DCh - Function 0Dh Subfunction 0100h
INT DCh - Function 0Dh Subfunction 0101h
INT DCh - Function 0Dh Subfunction 0102h
INT DCh - Function 0Eh Subfunction 00h(ノーマル・ハイレゾ)
分類 拡張MS-DOS
名前 RS-232C受信データ長の取得
対象 MS-DOS 3.1(PS98-011):IO.SYS
MS-DOS 3.3(all):IO.SYS
MS-DOS 5.0, 5.0A:IO.SYS
(ノーマル・ハイレゾモード両用MS-DOS)
入力 CL=0Eh
DL=チャネル・機能指定
00h: チャネル0(本体内蔵RS-232C)
10h: チャネル1(RS-232C拡張回線)
20h: チャネル2(RS-232C拡張回線)
出力 [存在するチャネルを指定した時]
AX=受信バッファ内のデータのバイト数
[存在しないチャネルを指定した時]
AX=FFFFh
解説 o RS-232C受信バッファ内にあるデータのバイト数を返す。
u MS-DOS 3.1(PS98-011)では、RSDRV.SYSを組み込まないと本ファンクションは
無動作になる(AXは無変化)。
u MS-DOS 3.3(PS98-013)以降では、チャネル0を指定したときRSDRV.SYSの
組み込みチェックを行わない。このため、RSDRV.SYSが組み込まれていない
とき、ノーマルモードでチャネル0を指定してこのファンクションを実行する
と、無意味な処理を行う。ハイレゾモードでチャネル0を指定してこの
ファンクションを実行すると、未初期化状態でINT 19h - Function 02h(BIOS)
を実行することになる。
o RS-232C拡張インターフェースボードが実装されていないとき、チャネル
1,2を指定するとAX=FFFFhで戻る。ノーマルモードで、RS-232C拡張
インターフェースボード上のBIOS ROMがKILLされている場合も同様。
u 主な処理内容は次の通り。
ノーマルモードではINT 19h,D4h,D5h - Function 04h(RSDRV)を、ハイレゾ
モードではINT 19h - Function 02h(BIOS)を実行する。
関連 INT DCh - Function 0Eh Subfunction 01h
INT DCh - Function 0Eh Subfunction 00h(ノーマル)
分類 拡張MS-DOS
名前 RS-232C受信データ長の取得
対象 MS-DOS 1.25(PS98-111):IO.SYS
MS-DOS 2.0(all):IO.SYS
MS-DOS 3.1(PS98-125・127・129):IO.SYS
MS-DOS 3.1(PC-98LT・HA):IO.SYS
(ノーマルモード専用MS-DOS)
入力 CL=0Eh
DL=00
出力 AX=受信バッファ内のデータのバイト数
解説 o RS-232C受信バッファ内にあるデータのバイト数を返す。
o PS98-127・129では、RSDRV.SYSを組み込まないと本ファンクションは無動作に
なる(AXは無変化)。
o この項目の対象になっているノーマルモード専用のMS-DOSは、チャネル0
のみサポートしている。DL≠00hで実行したとき、MS-DOS 1.25ではAXは
無変化、それ以外ではAX=0000hが返る。
u 主な処理内容は次の通り。
INT 19h - Function 04h(RSDRV)を実行する。
関連 INT DCh - Function 0Ah(ノーマル)
INT DCh - Function 0Eh Subfunction 00h(ハイレゾ)
分類 拡張MS-DOS
名前 RS-232C受信データ長の取得
対象 MS-DOS 2.0(PS98-XA121・XL121):IO.SYS
MS-DOS 3.1(PS98-XA125・XL125):IO.SYS
(ハイレゾモード専用MS-DOS)
入力 CL=0Eh
DL=チャネル指定
00h: チャネル0(本体内蔵RS-232C)
10h: チャネル1(RS-232C拡張回線)
20h: チャネル2(RS-232C拡張回線)
出力 AX=受信バッファ内のデータのバイト数
解説 o RS-232C受信バッファ内にあるデータのバイト数を返す。
o PS98-XL121・XL125では、RSDRV.SYSを組み込まないと本ファンクションは
無動作になる(AXは無変化)。
u 主な処理内容は以下の通り。
INT 19h - Function 02h(BIOS)を実行し、得られたCXの値を返す。
RS-232C拡張インターフェースボードが実装されているかどうかなどの
チェックは行わない。
関連 INT DCh - Function 0Ah(ノーマル)
INT DCh - Function 0Eh Subfunction 01h
分類 拡張MS-DOS
名前 RS-232Cポートの初期化
対象 MS-DOS 3.1(PS98-011):IO.SYS
MS-DOS 3.3(all):IO.SYS
MS-DOS 5.0, 5.0A:IO.SYS
入力 CL=0Eh
DL=チャネル・機能指定
01h チャネル0(本体内蔵RS-232C)
11h チャネル1(RS-232C拡張回線)
21h チャネル2(RS-232C拡張回線)
BH=通信パラメータ指定
bit 7,6:ストップビット長
11b=2ビット
01b=1ビット
bit 5 :パリティ指定
1=偶数
0=奇数
bit 4 :パリティ指定
1=あり
0=なし
bit 3,2:データビット長
11b=8ビット
10b=7ビット
bit 1 :0
bit 0 :Xフローコントロール
1=あり
0=なし
BL=通信速度指定
bit 7〜4:0000bを設定
bit 3〜0:通信速度
1001b=19200bps■19200bps対応機のみ
1000b=9600bps
0111b=4800bps
0110b=2400bps
0101b=1200bps
0100b= 600bps
0011b= 300bps
0010b= 150bps
0001b= 75bps
0000b= 無効
* 通信速度はチャネル0でのみ指定できる。
出力 AX=リターンコード
0000h 正常終了
FFFFh 異常終了(拡張RS-232Cボードが実装されていない)
解説 o RS-232Cポートのハードウェアとワークエリアを初期化する。
以降、AUX,AUX1,AUX2デバイスを使用した入出力が可能になる。
o 受信バッファは256バイト確保される。
u 19200bps対応機かどうかの判別は、F8E8:0002h(ノーマル)または
FFE8:0002h(ハイレゾ)を参照して行う。
本体が19200bps対応機ならば、98ハイレゾボード(PC-9821A-E02)のハイレゾ
モードでも、BIOSで19200bpsが使用できる。
u MS-DOS 3.1(PS98-011)では、RSDRV.SYSを組み込まないと本ファンクションは
無動作になる(AXは無変化)。
u MS-DOS 3.3(PS98-013)以降では、ノーマルモードでチャネル0を指定した
ときRSDRV.SYSの組み込みチェックを行わない。このため、RSDRV.SYSが
組み込まれていないとき、ノーマルモードでチャネル0を指定して
このファンクションを実行すると、無意味な処理を行う。
o RS-232C拡張インターフェースボードが実装されていないとき、チャネル
1,2を指定するとAX=FFFFhで戻る。ノーマルモードで、RS-232C拡張
インターフェースボード上のBIOS ROMがKILLされている場合も同様。
u 主な処理内容は次の通り。
ノーマルモードでは、INT 19h,D4h,D5h - Function 00h(RSDRV)を実行する。
ハイレゾモードでは、チャネル0が指定されたときは内部的にINT DCh -
Function 0Ahを、チャネル1,2が指定されたときはINT 19h - Function 00h
(BIOS)を実行する。
u MS-DOS 5.0Aの一部バージョン(PC-9821Af・Ne, PC-9801NX/C・P付属版など)
では、SPEED.EXEを実行してもRS-232C割り込み(INT 0Ch)が割り込み
コントローラによってマスクされたままになる場合がある。
このファンクションを直接実行した場合は、そのようなことは起らない。
関連 INT DCh - Function 0Eh Subfunction 00h
INT DCh - Function 0Eh Subfunction 06h
0060:0068h
0060:17EEh
F8E8:0002h[ノーマル]
FFE8:0002h[ハイレゾ]
INT DCh - Function 0Eh Subfunction 06h
分類 拡張MS-DOS
名前 RS-232Cポートのプロトコル読み出し
Undocumented
対象 MS-DOS 3.3(all):IO.SYS
MS-DOS 5.0, 5.0A:IO.SYS
入力 CL=0Eh
DL=チャネル・機能指定
06h チャネル0(本体内蔵RS-232C)
16h チャネル1(RS-232C拡張回線)
26h チャネル2(RS-232C拡張回線)
出力 AX=リターンコード
0000h 正常終了
FFFFh 異常終了(拡張RS-232Cボードが実装されていない)
BH=通信パラメータ
* INT DCh - Function 0Eh Subfunction 01hと同じ
BL=通信速度
* INT DCh - Function 0Eh Subfunction 01hと同じ
解説 o INT DCh - Function 0Eh Subfunction 01hで設定したプロトコルを読み出す。
u MS-DOS 3.3(PS98-013)以降では、チャネル0を指定したときRSDRV.SYSの
組み込みチェックを行わない。このため、RSDRV.SYSが組み込まれていない
ときでも、チャネル0を指定してこのファンクションを実行すると、
0060:0068hの値が読み出される。その内容は、MS-DOS起動時にメモリスイッチ
1,2からコピーされたものである。
u RS-232C初期化前にこのファンクションを実行した場合、チャネル0を
指定すると、0060:0068hの値(メモリスイッチ1,2からコピーされた
ままの値)が読み出される。チャネル1,2を指定すると、0000hが読み
出される。
u ハイレゾモードで、RS-232Cチャネル0をINT DCh - Function 0Ahで
初期化した場合、通信パラメータ等をワークエリア(0060:0068h)に
保存しないため、このファンクションで正しくプロトコルを読み出すことは
できない。
u 主な処理内容は次の通り。
チャネル0が指定されたときは0060:0068hから、チャネル1が指定された
ときは0060:17EEh,17EFhから、チャネル2が指定されたときは
0060:17F0h,17F1hから読み出した値を返す。
関連 INT DCh - Function 0Eh Subfunction 01h
0060:0068h
0060:17EEh
0060:17F0h
INT DCh - Function 0Eh Subfunction 07h
分類 拡張MS-DOS
名前 拡張RS-232Cボードの有無の調査
Undocumented
対象 MS-DOS 3.3(all):IO.SYS
MS-DOS 5.0, 5.0A:IO.SYS
入力 CL=0Eh
DL=07h
出力 AX=リターンコード
0000h 拡張RS-232Cボードが実装されている
FFFFh 拡張RS-232Cボードが実装されていない
解説 o 拡張RS-232Cボードが実装されているかどうかを調べる。
RSDRV.SYSが組み込まれていなくても動作する。
u 主な処理内容は次の通り。
I/O 00B3hからリードしてFFh以外の値だったら、拡張RS-232Cボードが
実装されていると判断している。
実際には、DLの上位4ビットの値は任意。
関連 I/O 00B3h
INT DCh - Function 0Fh Subfunction 0000h,0001h
分類 拡張MS-DOS
名前 [CTRL]+ファンクションキーのソフトキー化/解除
対象 MS-DOS 3.1(PS98-125・127・129・011・XA125):IO.SYS
MS-DOS 3.1(PC-98LT・HA):IO.SYS
MS-DOS 3.3(all):IO.SYS
MS-DOS 5.0, 5.0A:IO.SYS
入力 CL=0Fh
AX=サブファンクション番号
0000h: [CTRL]+ファンクションキー入力をアプリケーションから取得可能
0001h: [CTRL]+ファンクションキー操作をMS-DOSで占有(デフォルト)
出力 レジスタ変化なし
解説 o [CTRL]+ファンクションキーを押したとき、アプリケーションがキー入力を
取得できる状態にするか、MS-DOSが占有して画面行数切り替えなどを行う
状態にするかを設定する。
o [CTRL]+ファンクションキー入力をアプリケーションから取得可能にした
ときは、INT DCh - Function 0Dhで設定した文字列がアプリケーションに
入力される。
o [CTRL]+ファンクションキー操作をMS-DOSが占有した状態でのキーの機能は
以下のようになる。
---------------+------------------------------
キー |機能
---------------+------------------------------
[CTRL]+[f・4] |グラフ文字/漢字表示モード切換
[CTRL]+[f・5] |16進入力
[CTRL]+[f・6] |行数切換
[CTRL]+[f・7] |ファンクションキー表示切換
[CTRL]+[f・8] |画面クリア
[CTRL]+[f・9] |画面スクロール速度切換
---------------+------------------------------
関連 0060:010Ch bit 0
INT DCh - Function 0Fh Subfunction 8000h
INT DCh - Function 0Fh Subfunction 0002h,0003h
分類 拡張MS-DOS
名前 [CTRL]+[XFER]・[NFER]のソフトキー化/解除
Undocumented
対象 MS-DOS 3.1(PS98-125・127・129・011):IO.SYS
MS-DOS 3.1(PC-98LT・HA):IO.SYS
MS-DOS 3.3(all):IO.SYS
MS-DOS 5.0, 5.0A:IO.SYS
入力 CL=0Fh
AX=サブファンクション番号
0002h: [CTRL]+[XFER]・[NFER]入力をアプリケーションから取得可能
0003h: [CTRL]+[XFER]・[NFER]入力をMS-DOSで占有(デフォルト)
出力 レジスタ変化なし
解説 o 日本語入力FEPを組み込まない環境で、[CTRL]+[XFER]または[CTRL]+[NFER]を
押したとき、16進漢字入力を行う状態にするか、
アプリケーションがキー入力を取得できる状態にするかを設定する。
ただし、日本語入力FEPが組み込まれていると、このファンクションによる
設定を行ってもアプリケーションから[CTRL]+[XFER]・[NFER]を取得できない。
o [CTRL]+[XFER]・[NFER]入力をアプリケーションから取得可能にした
ときは、INT DCh - Function 0Dh Subfunction 0039hで設定した文字列が
アプリケーションに入力される。
o [CTRL]+[XFER]と[CTRL]+[NFER]の入力を区別することはできない。
関連 0060:010Ch bit 1
INT DCh - Function 0Dh Subfunction 0039h
INT DCh - Function 0Fh Subfunction 8002h
INT DCh - Function 0Fh Subfunction 8000h
分類 拡張MS-DOS
名前 [CTRL]+ファンクションキーのソフトキー化状態読み出し
対象 MS-DOS 3.3(all):IO.SYS
MS-DOS 5.0, 5.0A:IO.SYS
入力 CL=0Fh
AX=8000h
出力 AX=[CTRL]+ファンクションキー状態
0000h [CTRL]+ファンクションキー入力をアプリケーションから取得可能
0001h [CTRL]+ファンクションキー操作をMS-DOSで占有
解説 o INT DCh - Function 0Fh Subfunction 0000h,0001hで設定した状態を
読み出す。
関連 0060:010Ch bit 0
INT DCh - Function 0Fh Subfunction 0000h,0001h
INT DCh - Function 0Fh Subfunction 8002h
分類 拡張MS-DOS
名前 [CTRL]+[XFER]・[NFER]のソフトキー化/解除状態取得
Undocumented
対象 MS-DOS 3.3(all):IO.SYS
MS-DOS 5.0, 5.0A:IO.SYS
入力 CL=0Fh
AX=8002h
出力 AX=[CTRL]+[XFER]・[NFER]のソフトキー化/解除状態
0000h: [CTRL]+[XFER]・[NFER]入力をアプリケーションから取得可能
0001h: [CTRL]+[XFER]・[NFER]入力をMS-DOSで占有(デフォルト)
解説 o INT DCh - Function 0Fh Subfunction 0002h,0003hで設定した状態を
読み出す。
関連 0060:010Ch bit 1
INT DCh - Function 0Fh Subfunction 0002h,0003h
INT DCh - Function 10h Subfunction 00h
分類 拡張MS-DOS
名前 直接コンソール出力−1バイトの画面出力
対象 MS-DOS 2.0(all):IO.SYS
MS-DOS 3.1(all):IO.SYS
MS-DOS 3.3(all):IO.SYS
MS-DOS 5.0, 5.0A:IO.SYS
入力 CL=10h
AH=00h
DL=出力するキャラクタ
出力 レジスタ変化なし
解説 o テキスト画面に1バイトの文字データを出力する。
2バイト文字は1バイト目、2バイト目の順に出力する。
関連
INT DCh - Function 10h Subfunction 01h
分類 拡張MS-DOS
名前 直接コンソール出力−文字列の画面出力
対象 MS-DOS 2.0(all):IO.SYS
MS-DOS 3.1(all):IO.SYS
MS-DOS 3.3(all):IO.SYS
MS-DOS 5.0, 5.0A:IO.SYS
入力 CL=10h
AH=01h
DS:DX=文字列の先頭アドレス(文字列の最後は'$')
出力 レジスタ変化なし
解説 o テキスト画面に文字列を出力する。
関連
INT DCh - Function 10h Subfunction 02h
分類 拡張MS-DOS
名前 直接コンソール出力−文字アトリビュートの設定
対象 MS-DOS 2.0(all):IO.SYS
MS-DOS 3.1(all):IO.SYS
MS-DOS 3.3(all):IO.SYS
MS-DOS 5.0, 5.0A:IO.SYS
入力 CL=10h
AH=02h
DL=アトリビュート情報(VRAM上の表現と同じ)
■[PC-H98]拡張アトリビュートモード時(Undocumented)
DX=アトリビュート情報(VRAM上の表現と同じ)
出力 レジスタ変化なし
解説 o 文字表示するときのアトリビュートを設定する。
u MS-DOS 3.3C以降では、PC-H98の拡張アトリビュートモードをサポート
している。拡張アトリビュートモードのときは、DXレジスタで16ビットの
アトリビュートを指定する。
関連 0060:011Dh
0060:013Ch
INT DCh - Function 10h Subfunction 03h
分類 拡張MS-DOS
名前 直接コンソール出力−カーソル位置の設定
対象 MS-DOS 2.0(all):IO.SYS
MS-DOS 3.1(all):IO.SYS
MS-DOS 3.3(all):IO.SYS
MS-DOS 5.0, 5.0A:IO.SYS
入力 CL=10h
AH=03h
DH=行位置
DL=桁位置
出力 レジスタ変化なし
解説 o カーソル位置を設定する。文字表示はカーソル位置に行われる。
位置指定は画面左上を(0,0)とする。
u 最大行数,最大桁数を超えた値が指定された場合、以下のような動作をする。
最大値〜DFh : 最大値とみなす
E0〜FFh : 0とみなす
関連
INT DCh - Function 10h Subfunction 04h
分類 拡張MS-DOS
名前 直接コンソール出力−カーソルを1行下に移動
対象 MS-DOS 2.0(all):IO.SYS
MS-DOS 3.1(all):IO.SYS
MS-DOS 3.3(all):IO.SYS
MS-DOS 5.0, 5.0A:IO.SYS
入力 CL=10h
AH=04h
出力 レジスタ変化なし
解説 o カーソルを1行下に移動する。桁位置は変わらない。
カーソルが最下行にあったときは、画面全体がスクロールアップする。
関連
INT DCh - Function 10h Subfunction 05h
分類 拡張MS-DOS
名前 直接コンソール出力−カーソルを1行上に移動
対象 MS-DOS 2.0(all):IO.SYS
MS-DOS 3.1(all):IO.SYS
MS-DOS 3.3(all):IO.SYS
MS-DOS 5.0, 5.0A:IO.SYS
入力 CL=10h
AH=05h
出力 レジスタ変化なし
解説 o カーソルを1行上に移動する。桁位置は変わらない。
カーソルが最上行にあったときは、画面全体がスクロールダウンする。
関連
INT DCh - Function 10h Subfunction 06h
分類 拡張MS-DOS
名前 直接コンソール出力−カーソルを指定行数分上に移動
対象 MS-DOS 2.0(all):IO.SYS
MS-DOS 3.1(all):IO.SYS
MS-DOS 3.3(all):IO.SYS
MS-DOS 5.0, 5.0A:IO.SYS
入力 CL=10h
AH=06h
DL=移動行数
出力 レジスタ変化なし
解説 o カーソルを、DLで指定した行数分上に移動する。桁位置は変わらない。
カーソルを移動した結果が最上行を超えるとき、カーソルは最上行に
設定される。このとき、画面スクロールは起らない。
o DL=0のとき、1が指定されたときと同じ動作をする。
関連
INT DCh - Function 10h Subfunction 07h
分類 拡張MS-DOS
名前 直接コンソール出力−カーソルを指定行数分下に移動
対象 MS-DOS 2.0(all):IO.SYS
MS-DOS 3.1(all):IO.SYS
MS-DOS 3.3(all):IO.SYS
MS-DOS 5.0, 5.0A:IO.SYS
入力 CL=10h
AH=07h
DL=移動行数
出力 レジスタ変化なし
解説 o カーソルを、DLで指定した行数分下に移動する。桁位置は変わらない。
カーソルを移動した結果が最下行を超えるとき、カーソルは最下行に
設定される。このとき、画面スクロールは起らない。
o DL=0のとき、1が指定されたときと同じ動作をする。
関連
INT DCh - Function 10h Subfunction 08h
分類 拡張MS-DOS
名前 直接コンソール出力−カーソルを指定桁数分右に移動
対象 MS-DOS 2.0(all):IO.SYS
MS-DOS 3.1(all):IO.SYS
MS-DOS 3.3(all):IO.SYS
MS-DOS 5.0, 5.0A:IO.SYS
入力 CL=10h
AH=08h
DL=移動桁数
出力 レジスタ変化なし
解説 o カーソルを、DLで指定した桁数分右に移動する。行位置は変わらない。
カーソルを移動した結果が右端を超えるとき、カーソルは右端に
設定される。
o DL=0のとき、1が指定されたときと同じ動作をする。
関連
INT DCh - Function 10h Subfunction 09h
分類 拡張MS-DOS
名前 直接コンソール出力−カーソルを指定桁数分左に移動
対象 MS-DOS 2.0(all):IO.SYS
MS-DOS 3.1(all):IO.SYS
MS-DOS 3.3(all):IO.SYS
MS-DOS 5.0, 5.0A:IO.SYS
入力 CL=10h
AH=09h
DL=移動桁数
出力 レジスタ変化なし
解説 o カーソルを、DLで指定した桁数分左に移動する。行位置は変わらない。
カーソルを移動した結果が左端を超えるとき、カーソルは左端に
設定される。
o DL=0のとき、1が指定されたときと同じ動作をする。
関連
INT DCh - Function 10h Subfunction 0Ah
分類 拡張MS-DOS
名前 直接コンソール出力−画面クリア
対象 MS-DOS 2.0(all):IO.SYS
MS-DOS 3.1(all):IO.SYS
MS-DOS 3.3(all):IO.SYS
MS-DOS 5.0, 5.0A:IO.SYS
入力 CL=10h
AH=0Ah
DL=機能指定
00h カーソル位置から最下行右端までをクリア
(カーソル位置は変化しない)
01h 最上行左端からカーソル位置までをクリア
(カーソル位置は変化しない)
02h 画面全体をクリア
(カーソルは(0,0)に移動する)
出力 レジスタ変化なし
解説 o 画面の指定された部分をクリアする。
関連
INT DCh - Function 10h Subfunction 0Bh
分類 拡張MS-DOS
名前 直接コンソール出力−行クリア
対象 MS-DOS 2.0(all):IO.SYS
MS-DOS 3.1(all):IO.SYS
MS-DOS 3.3(all):IO.SYS
MS-DOS 5.0, 5.0A:IO.SYS
入力 CL=10h
AH=0Bh
DL=機能指定
00h カーソル位置から行の右端までをクリア
01h 行の左端からカーソル位置までをクリア
02h カーソル位置の行全体をクリア
出力 レジスタ変化なし
解説 o 画面の指定された部分をクリアする。カーソル位置は変化しない。
関連
INT DCh - Function 10h Subfunction 0Ch
分類 拡張MS-DOS
名前 直接コンソール出力−カーソル位置に指定行数分挿入
対象 MS-DOS 2.0(all):IO.SYS
MS-DOS 3.1(all):IO.SYS
MS-DOS 3.3(all):IO.SYS
MS-DOS 5.0, 5.0A:IO.SYS
入力 CL=10h
AH=0Ch
DL=挿入する行数
出力 レジスタ変化なし
解説 o カーソル位置以下の行(カーソル行含む)をDLで指定した行数分
スクロールダウンし、空白行を挿入する。カーソルは同一行の左端に
移動する。
DL=0のとき、1が指定されたものとして処理される。
関連
INT DCh - Function 10h Subfunction 0Dh
分類 拡張MS-DOS
名前 直接コンソール出力−カーソル行から指定行分削除
対象 MS-DOS 2.0(all):IO.SYS
MS-DOS 3.1(all):IO.SYS
MS-DOS 3.3(all):IO.SYS
MS-DOS 5.0, 5.0A:IO.SYS
入力 CL=10h
AH=0Dh
DL=削除する行数
出力 レジスタ変化なし
解説 o カーソル位置以下の行(カーソル行含む)をDLで指定した行数分
削除し、その次の行をカーソル位置までスクロールアップする。
カーソルは同一行の左端に移動する。
DL=0のとき、1が指定されたものとして処理される。
関連
INT DCh - Function 10h Subfunction 0Eh
分類 拡張MS-DOS
名前 直接コンソール出力−漢字・グラフモード切換
対象 MS-DOS 2.0(all):IO.SYS
MS-DOS 3.1(all):IO.SYS
MS-DOS 3.3(all):IO.SYS
MS-DOS 5.0, 5.0A:IO.SYS
入力 CL=10h
AH=0Eh
DL=機能指定
00h シフトJIS漢字表示モード(デフォルト)
03h グラフィック文字表示モード
出力 レジスタ変化なし
解説 o シフトJIS漢字を表示するモードとグラフィック文字を表示するモードの
切換を行う。
o 画面に81〜9Fh,E0〜FChの範囲の値を出力したとき、シフトJIS漢字表示
モードでは2バイト文字の1バイト目として取り扱う。グラフィック文字
表示モードではグラフィック文字を表示する。
DLに00h, 03h以外の値を指定すると無視される。
o モードの切換は以下のエスケープシーケンスでも行える。
---------------+-----------------------------
エスケープシーケンス |モード
---------------+-----------------------------
ESC+")0" |シフトJIS漢字表示モード
ESC+")3" |グラフィック文字表示モード
---------------+-----------------------------
o モードの切換はキーボードでも行える。
キーボードから[CTRL]+[f・4]を入力すると、モードがトグル切換する。
関連 0060:008Ah
INT DCh - Function 10h Subfunction 0F〜FFh
分類 拡張MS-DOS
名前 直接コンソール出力−実行禁止
Undocumented
対象 MS-DOS 2.0(all):IO.SYS
MS-DOS 3.1(all):IO.SYS
MS-DOS 3.3(all):IO.SYS
MS-DOS 5.0, 5.0A:IO.SYS
入力 CL=10h
AH=0F〜FFh
出力 レジスタ変化なし
解説 u AH=0F〜FFhで実行すると暴走するので注意。
関連
INT DCh - Function 11h Subfunction 0000h,0001h
分類 拡張MS-DOS
名前 プリンタモードの変更−漢字:ANK比率の指定
対象 MS-DOS 3.1(PS98-127・129・011・XA125):IO.SYS
MS-DOS 3.1(PC-98LT・HA):IO.SYS
MS-DOS 3.3(all):IO.SYS
MS-DOS 5.0, 5.0A:IO.SYS
入力 CL=11h
AX=漢字:ANK比率の指定
0000h 漢字:ANKの文字幅比を1.5:1にする
0001h 漢字:ANKの文字幅比を 2:1にする(デフォルト)
出力 レジスタ変化なし
解説 o プリンタに文字出力するとき、漢字がANK文字の2倍の文字間隔になる
ような空白を入れるかどうかを設定する。漢字:ANKの文字幅比を1.5:1に
設定すると空白が入らない。
o このファンクション自体は、PRINT.SYSが組み込まれていなくても
実行できる。
関連 INT DCh - Function 11h Subfunction 8000h
0060:1E57h bit 0
INT DCh - Function 11h Subfunction 0010h,0011h
分類 拡張MS-DOS
名前 プリンタモードの変更−漢字横書き・縦書き指定
Undocumented
対象 MS-DOS 3.1(PS98-127・129・011・XA125):IO.SYS
MS-DOS 3.1(PC-98LT・HA):IO.SYS
MS-DOS 3.3(all):IO.SYS
MS-DOS 5.0, 5.0A:IO.SYS
入力 CL=11h
AX=サブファンクション番号
0010h 漢字縦書き指定
0011h 漢字横書き指定(デフォルト)
出力 レジスタ変化なし
解説 o プリンタに漢字を出力するとき、縦書き指定(エスケープシーケンス
"^[K"で漢字イン)するか、横書き指定(エスケープシーケンス"^[t"で
漢字イン)するかを設定する。
ANK文字(1バイト文字)は常に横書きになる。
o このファンクション自体は、PRINT.SYSが組み込まれていなくても
実行できる。
関連 INT DCh - Function 11h Subfunction 8010h
0060:1E57h bit 1
INT DCh - Function 11h Subfunction 0020h,0021h
分類 拡張MS-DOS
名前 プリンタモードの変更−[CTRL]+[P]・[N]動作指定
対象 MS-DOS 3.1(PS98-011):IO.SYS
MS-DOS 3.3(all):IO.SYS
MS-DOS 5.0, 5.0A:IO.SYS
入力 CL=11h
AX=サブファンクション番号
0020h 偶数回目の[CTRL]+[P]・[N]押下でプリンタにCR/LFを出力しない
0021h 偶数回目の[CTRL]+[P]・[N]押下でプリンタにCR/LFを出力する
(デフォルト)
出力 レジスタ変化なし
解説 o 偶数回目の[CTRL]+[P]・[N]押下時に、プリンタにCR/LFコードを出力するか
どうかを設定する。
o [CTRL]+[P]・[N]を押下すると、画面出力と同時にプリンタにも出力する
モードのON/OFFがトグルで行われる。デフォルトでは、このモードがOFFに
なるタイミングで、プリンタにCR/LFを出力する。このため、MS-DOS経由では
一切画面出力を行わないアプリケーションでも、キー入力でMS-DOSを利用
すると偶数回目の[CTRL]+[P]・[N]の入力でプリンタにも出力が行われて
しまうことがある。CR/LFを出力しないモードに設定しておけば、
余計なプリンタ出力を防ぐことができる。
o このファンクション自体は、PRINT.SYSが組み込まれていなくても
実行できる。
関連 INT DCh - Function 11h Subfunction 8020h
0060:1E57h bit 7
INT DCh - Function 11h Subfunction 8000h
分類 拡張MS-DOS
名前 プリンタモードの取得−漢字:ANK比率の取得
Undocumented
対象 MS-DOS 3.1(PS98-011):IO.SYS
MS-DOS 3.3(all):IO.SYS
MS-DOS 5.0, 5.0A:IO.SYS
入力 CL=11h
AX=8000h
出力 AX=リターンコード
0000h 漢字:ANKの文字幅比=1.5:1
0001h 漢字:ANKの文字幅比= 2:1(デフォルト)
解説 o 漢字:ANK比率の状態を取得する。
o このファンクション自体は、PRINT.SYSが組み込まれていなくても
実行できる。
関連 INT DCh - Function 11h Subfunction 0000h,0001h
0060:1E57h bit 0
INT DCh - Function 11h Subfunction 8010h
分類 拡張MS-DOS
名前 プリンタモードの取得−漢字横書き・縦書き指定の取得
Undocumented
対象 MS-DOS 3.1(PS98-011):IO.SYS
MS-DOS 3.3(all):IO.SYS
MS-DOS 5.0, 5.0A:IO.SYS
入力 CL=11h
AX=8010h
出力 AX=リターンコード
0000h 漢字縦書き指定
0001h 漢字横書き指定(デフォルト)
解説 o 漢字横書き・縦書き指定の状態を取得する。
o このファンクション自体は、PRINT.SYSが組み込まれていなくても
実行できる。
関連 INT DCh - Function 11h Subfunction 0010h,0011h
0060:1E57h bit 1
INT DCh - Function 11h Subfunction 8020h
分類 拡張MS-DOS
名前 プリンタモードの取得−[CTRL]+[P]・[N]動作指定の取得
Undocumented
対象 MS-DOS 3.1(PS98-011):IO.SYS
MS-DOS 3.3(all):IO.SYS
MS-DOS 5.0, 5.0A:IO.SYS
入力 CL=11h
AX=8020h
出力 AX=リターンコード
0000h 偶数回目の[CTRL]+[P]・[N]押下でプリンタにCR/LFを出力しない
0001h 偶数回目の[CTRL]+[P]・[N]押下でプリンタにCR/LFを出力する
(デフォルト)
解説 o [CTRL]+[P]・[N]の動作の設定状態を取得する。
o このファンクション自体は、PRINT.SYSが組み込まれていなくても
実行できる。
関連 INT DCh - Function 11h Subfunction 0020h,0021h
0060:1E57h bit 7
INT DCh - Function 12h
分類 拡張MS-DOS
名前 MS-DOS製品バージョン・機種情報の取得
Undocumented
対象 MS-DOS 3.1(PS98-011):IO.SYS
MS-DOS 3.3(all):IO.SYS
MS-DOS 5.0, 5.0A:IO.SYS
入力 CL=12h
出力 AX=製品番号
DX=機種情報
解説 o MS-DOSの製品番号と機種情報を読み出す。
「MS-DOSバージョン−製品番号−内部リビジョン番号の対応」、
「機種情報の意味」を参照。
o 本ファンクションをサポートしているMS-DOSでは必ずAX≠0000hで戻るので、
AX=0000hでこのファンクションを実行して、AX=0000hで戻ったら
本ファンクション非サポートのMS-DOSであると判断できる。
u DXに返される機種情報は、MS-DOSのバージョンにより判別できる範囲が
異なるなどするため、使用しないほうが良い。
関連 0060:0020h
INT DCh - Function 15h Subfunction 0000h
表 MS-DOSバージョン−製品番号−内部リビジョン番号の対応
-------------+-----+--------+------------------------------------
MS-DOS |製品 |内部Revi|備考
Version |番号 |sion番号|
-------------+-----+--------+------------------------------------
3.1(PS98-011)|0001h| - |
3.3 |0002h| - |
3.3A |0002h| - |
3.3B |0002h| - |
3.3C |0003h| - |
3.3D |0004h| - |
3.3D-R |0005h| - |PC-9801NL ROM DISK
5.0 |0101h| 01h |初期出荷版
5.0 |0101h| 03h |改訂版
5.0A |0102h| 01h |初期出荷版
5.0A-H |0102h| 01h |PC-9801NA(HDモデル付属)
| | |初期出荷版との差異はタイトル文字のみ
5.0A-H |0102h| 03h |1.44MB FDサポート
| | |PC-9821Ap(FDモデル付属)
| | |PC-9801NS/R付属
5.0A-H |0104h| 04h |PC-9821Ap(HDモデル付属)
| | |内部Revision 03hとの差異は、
| | |製品番号・内部Revision番号のみ
-------------+-----+--------+------------------------------------
* 製品番号とは、INT DCh - Function 12h実行後のAXの値
* 内部Revision番号とは、INT DCh - Function 15h Subfunction 0000h
実行後のALの値
表 機種情報の意味
-----+-----------------------------------------------------------------
値 |MS-DOS 3.1 (PS98-011)
-----+-----------------------------------------------------------------
0000h|PC-9801無印
0001h|PC-9801E・F・M
0002h|PC-9801U
0003h|PC-9801無印・E・F・M・U以外のノーマルモード
0100h|PC-98XA
0101h|PC-98XA以外のハイレゾモード
-----+-----------------------------------------------------------------
-----+-----------------------------------------------------------------
値 |MS-DOS 3.3, 3.3A (PS98-013, PS98-015)
-----+-----------------------------------------------------------------
0000h|PC-9801無印
0001h|PC-9801E・F・M
0002h|PC-9801U
0003h|PC-9801無印・E・F・M・U以外のノーマルモード
| 0000:0481h bit 7,6 = 00bの場合
0004h|PC-9801無印・E・F・M・U以外のノーマルモード
| 0000:0481h bit 7,6 = 01bの場合
0100h|PC-98XA
0101h|PC-98XA以外のハイレゾモード
1000h|0000:0481h = 1xxxx001b のときのノーマルモード
1100h|0000:0481h = 1xxxx001b のときのハイレゾモード
1001h|0000:0481h = 1xxxx010b のときのノーマルモード
1101h|0000:0481h = 1xxxx010b のときのハイレゾモード
1002h|0000:0481h = 1xxxx100b のときのノーマルモード
1102h|0000:0481h = 1xxxx100b のときのハイレゾモード
1002h|0000:0481h = 1xxxxxxxb で上記以外
-----+-----------------------------------------------------------------
* 0000:0481h bit 7,6は、のちに0000:0458h bit 7,6に変更されたと
考えられる。0000:0458h bit 7はNESAフラグ、bit 6はマルチメディア
アーキテクチャフラグ(PC-98GSを表す)である。ただし、PC-H98(NESA),
PC-98GSともMS-DOS 3.3A出荷時には発表されていない。
-----+-----------------------------------------------------------------
値 |MS-DOS 3.3B (PS98-017)
-----+-----------------------------------------------------------------
0000h|PC-9801無印
0001h|PC-9801E・F・M
0002h|PC-9801U
0003h|PC-9801無印・E・F・M・U,PC-98GS,PC-H98以外のノーマルモード
0004h|PC-98GS
0100h|PC-98XA
0101h|PC-98XA,PC-H98以外のハイレゾモード
1004h|PC-H98ノーマル
1101h|PC-H98ハイレゾ
-----+-----------------------------------------------------------------
* MS-DOS 3.3B出荷時には、PC-H98,PC-98GSとも発表されていない。
-----+-----------------------------------------------------------------
値 |MS-DOS 3.3C, 3.3D (PS98-019, PS98-1002)
-----+-----------------------------------------------------------------
0000h|PC-9801無印
0001h|PC-9801E・F・M
0002h|PC-9801U
0003h|PC-9801無印・E・F・M・U,PC-98GS,PC-H98以外のノーマルモード
0004h|PC-98GS
0100h|PC-98XA
0101h|PC-98XA,PC-H98以外のハイレゾモード
1004h|PC-H98ノーマルモード (実際のCPUがi486以外)
1005h|PC-H98ノーマルモード (実際のCPUがi486)
1101h|PC-H98ハイレゾモード (実際のCPUがi486以外)
1102h|PC-H98ハイレゾモード (実際のCPUがi486)
-----+-----------------------------------------------------------------
* Pentiumプロセッサ, ODP DX2等も、「実際のCPUがi486以外」に含まれる。
-----+-----------------------------------------------------------------
値 |MS-DOS 5.0, 5.0A (PS98-1003-x1, PS98-1003-x2)
-----+-----------------------------------------------------------------
0000h|PC-9801無印
0001h|PC-9801E・F・M
0002h|PC-9801U
0003h|PC-9801無印・E・F・M・U,PC-H98以外のノーマルモード
| 0000:0481h bit 6 = 0の場合
0004h|PC-9801無印・E・F・M・U,PC-H98以外のノーマルモード
| 0000:0481h bit 6 = 1の場合
0100h|PC-98XA
0101h|PC-98XA,PC-H98以外のハイレゾモード
1004h|PC-H98ノーマルモード (実際のCPUがi486以外)
1005h|PC-H98ノーマルモード (実際のCPUがi486)
1101h|PC-H98ハイレゾモード (実際のCPUがi486以外)
1102h|PC-H98ハイレゾモード (実際のCPUがi486)
-----+-----------------------------------------------------------------
* 本来は、0000:0481h bit 6ではなく、0000:0458h bit 6(マルチメディア
アーキテクチャフラグ=PC-98GS)をチェックしなければならない。
* Pentiumプロセッサ, ODP DX2等も、「実際のCPUがi486以外」に含まれる。
INT DCh - Function 12h(LT・HA)
分類 拡張MS-DOS
名前 ディスク入れ換え表示の置き換え
Undocumented
対象 MS-DOS 3.1(PC-98LT・HA):IO.SYS
入力 CL=12h
AX=機能指定
0000h: ディスク入れ換え表示をIO.SYSが行う(デフォルト)
0001h: ディスク入れ換え表示をユーザルーチンが行う
■AX=0001hのとき
DS:DX=呼び出されるユーザルーチンのエントリアドレス(FAR CALL)
出力 レジスタ変化なし
解説 o フロッピーディスク(相当)ドライブが1台のとき、A:ドライブと
B:ドライブを交互にアクセスするとIO.SYSが「ドライブ A:(B:)に
対応するディスクを挿入後,適当なキーを押してください」と表示
して、キー入力待ちする。
このファンクションでは、その処理を置き換えるルーチンを設定
できる。
o DS:DXで設定するユーザルーチンは、IO.SYSの内部からFAR CALLで
呼び出される。このとき、次にアクセスするドライブの番号が
AL(00h=A:, 01h=B:)にセットされている。
ユーザルーチンでは、全レジスタを保証しなければならない。
o PC-98LT・HAだけの機能。
関連 INT DCh - Function 14h Subfunction 0000h(LT・HA)
0060:0082h
0060:0090h
INT DCh - Function 13h
分類 拡張MS-DOS
名前 MS-DOSドライブ名−DA/UA対照リストの取得
Undocumented
対象 MS-DOS 3.1(PS98-011):IO.SYS
MS-DOS 3.3(all):IO.SYS
MS-DOS 5.0, 5.0A:IO.SYS
入力 CL=13h
DS:DX=DA/UAリスト出力バッファ(バッファサイズ60hバイト)
出力 レジスタ変化なし
解説 o MS-DOSのドライブがどのディスク装置に割り当てられているかを示す
リストをDS:DXで指定したメモリに書き込む。
o リストのオフセット+1B〜+4Dhの間の奇数番地にはA:〜Z:ドライブの
DA/UAがセットされる。
オフセット+00〜+0FhにもDA/UAがセットされるが、P:ドライブまでの
情報しか得られない。
u 原則として、IO.SYS内蔵のブロックデバイスの情報が書き込ま
れる。デバイスドライバによって追加されたドライブの情報は得られない。
例外として、MS-DOS付属のRAMDISK.SYSとJEIDAメモリカードドライブ
(MCDRV.SYS)では、その情報をこのファンクションで得ることができる。
関連 0060:0038h
0060:006C〜007Bh
0060:0136h
0060:013Bh
0060:2C86〜2CB9h
表 DA/UAリスト出力バッファの構造
-------+--------------- -------+--------------- -------+---------------
オフセット |内容 オフセット |内容 オフセット |内容
-------+--------------- -------+--------------- -------+---------------
+00h |A:DA/UA +1Ah |A:アトリビュート +34h |N:アトリビュート
+01h |B:DA/UA +1Bh |A:DA/UA +35h |N:DA/UA
+02h |C:DA/UA +1Ch |B:アトリビュート +36h |O:アトリビュート
+03h |D:DA/UA +1Dh |B:DA/UA +37h |O:DA/UA
+04h |E:DA/UA +1Eh |C:アトリビュート +38h |P:アトリビュート
+05h |F:DA/UA +1Fh |C:DA/UA +39h |P:DA/UA
+06h |G:DA/UA +20h |D:アトリビュート +3Ah |Q:アトリビュート
+07h |H:DA/UA +21h |D:DA/UA +3Bh |Q:DA/UA
+08h |I:DA/UA +22h |E:アトリビュート +3Ch |R:アトリビュート
+09h |J:DA/UA +23h |E:DA/UA +3Dh |R:DA/UA
+0Ah |K:DA/UA +24h |F:アトリビュート +3Eh |S:アトリビュート
+0Bh |L:DA/UA +25h |F:DA/UA +3Fh |S:DA/UA
+0Ch |M:DA/UA +26h |G:アトリビュート +40h |T:アトリビュート
+0Dh |N:DA/UA +27h |G:DA/UA +41h |T:DA/UA
+0Eh |O:DA/UA +28h |H:アトリビュート +42h |U:アトリビュート
+0Fh |P:DA/UA +29h |H:DA/UA +43h |U:DA/UA
+10h |00h +2Ah |I:アトリビュート +44h |V:アトリビュート
+11h |00h +2Bh |I:DA/UA +45h |V:DA/UA
+12h |00h +2Ch |J:アトリビュート +46h |W:アトリビュート
+13h |00h +2Dh |J:DA/UA +47h |W:DA/UA
+14h |00h +2Eh |K:アトリビュート +48h |X:アトリビュート
+15h |00h +2Fh |K:DA/UA +49h |X:DA/UA
+16h |00h +30h |L:アトリビュート +4Ah |Y:アトリビュート
+17h |00h +31h |L:DA/UA +4Bh |Y:DA/UA
+18h |00h +32h |M:アトリビュート +4Ch |Z:アトリビュート
+19h |00h +33h |M:DA/UA +4Dh |Z:DA/UA
-------+--------------- -------+--------------- -------+---------------
-------+------------------------------------------------------------
オフセット 内容
-------+------------------------------------------------------------
+4Eh |00h=物理ドライブと論理ドライブの対応が1対1
|FFh=1台の物理ドライブに2台の論理ドライブが割り当てられている
|(0060:0038hのコピー)
+4Fh |00h=物理ドライブと論理ドライブの対応が1対1
|FFh=1台の物理ドライブに2台の論理ドライブが割り当てられている
|(0060:013Bhのコピー)
+50h |最後にアクセスしたドライブ番号(A:=00h)
|(0060:0136hのコピー)
+51〜 |
5Fh|00h(未使用)
-------+------------------------------------------------------------
* 1台の物理ドライブに2台の論理ドライブが割り当てられるのは、
MS-DOS 5.0では、ディスクがフロッピーディスク1台だけの場合。
オフセット+4Ehと+4Fhの差異は不明。
* CONFIG.SYSで追加したブロックデバイスは、原則としてDA/UAの
値がセットされない。PCMCIAメモリカードドライブ(MCDRV.SYS)、
RAM DISK(RAMDISK.SYS)は例外。
[DA/UAの意味]
-------+------------------------------------------------
DA/UA |装置の種類
-------+------------------------------------------------
00h |ドライブなし
68〜6Bh|BRANCH 4670 I/Fに接続された仮想ドライブ
70〜73h|640KB FD I/Fに接続されたドライブ
80〜83h|SASI・ESDI・IDE HD
90〜93h|1MB FD I/Fに接続されたドライブ
A0〜A6h|SCSI I/Fに接続されたHD, 3.5"MO, 5"MO, CD-ROM
D0h |ROMドライブ
D1h |PCMCIAメモリカードドライブ
E0h |RAM DISK(RAMDISK.SYS)
-------+------------------------------------------------
* 両用FD I/Fでは、1MB I/Fモードにしたときは9xh、
640KB I/Fモードにしたときは7xhになる。
* 0000:0494hで存在確認できる外付1MB FDDも7xhになる。この場合、外付
1MB FDDは1MB専用なので、そのドライブに対してDA/UA=7xhでINT 1Bhの
リード/ライトはできない。DA/UA=Fxhでのみリード/ライト可能。
* DA/UA=D0hのドライブにBIOSでアクセスするには、INT 1Fh - Function 94h,
95hを用いる。
* DA/UA=D1hのドライブにBIOSでアクセスするには、INT 1Fh - Function B4〜
B8hを用いる。
PC-9801NLは標準で使用可能。PCMCIA2.0スロット搭載機は
MCDRV.SYS組み込み時使用可能。
* DA/UA=E0hのRAM DISKにBIOSでアクセスする場合、INT 1Bh - Function 05h,
06h(RAMDISK)を用いる。
[アトリビュートの意味]
-------+----------------------------------------------------------
bit |意味
-------+----------------------------------------------------------
7 |1=1台の物理ドライブに2台の論理ドライブが割り当てられている
|0=物理ドライブと論理ドライブの対応が1対1。
6〜2 |未使用
1 |論理ドライブのセクタ指定幅(MS-DOS 5.0以降)
|1=32ビットセクタ(BPBのオフセット13hが0のドライブ)
|0=16ビットセクタ(BPBのオフセット13hが0以外のドライブ)
0 |MO識別
|1=5"MO, 3.5"MO
|0=その他
-------+----------------------------------------------------------
* 両用、3モードドライブなどを示すフラグはない。
INT DCh - Function 13h(LT・HA)
分類 拡張MS-DOS
名前 画面のハードコピー
Undocumented
対象 MS-DOS 3.1(PC-98LT・HA):IO.SYS
入力 CL=13h
AX=0000h テキスト画面のハードコピー
AX=0001h G-VRAMをイメージ出力
AX=0002h G-VRAMをイメージ出力(AX=0001hと同じ処理)
出力 レジスタ変化なし
レジスタ変化なし
解説 o プリンタに画面のハードコピーを出力する。
INT 05hのハードコピールーチンと一部を共用している。
o PC-98LT・HAだけの機能。
関連
INT DCh - Function 14h Subfunction 0000h,0001h
分類 拡張MS-DOS
名前 拡張アトリビュートモードの設定
Undocumented
対象 MS-DOS 3.3D:IO.SYS
MS-DOS 5.0, 5.0A:IO.SYS
PC-H98(ノーマル・ハイレゾ)
入力 CL=14h
AX=モード指定
0000h: EGHモード
0001h: PCモード(デフォルト)
出力 レジスタ変化なし
解説 o 拡張アトリビュートのモードを設定する。
u モードの切換は以下のエスケープシーケンスでも行える。(Undocumented)
-----------+-----------------------------
エスケープシーケンス|モード
-----------+-----------------------------
ESC+"[?5h" |EGHモード
ESC+"[?5l" |PCモード
-----------+-----------------------------
o アトリビュートのモードが変化した場合、IO.SYSワークエリア内の
現在の表示アトリビュートを消去アトリビュートに設定する。
o PC-H98以外の機種ではなにもしない。
関連 0060:011Dh
0060:0114h
0060:013Ch
0060:013Eh
0060:05D6h
INT 18h - Function 2Ah
INT DCh - Function 14h Subfunction 8000h
INT DCh - Function 14h Subfunction 0010h,0011h
分類 拡張MS-DOS
名前 テキストモードの設定
Undocumented
対象 MS-DOS 5.0, 5.0A:IO.SYS
PC-H98(ノーマル),PC-98GS,PC-9821(Bp・Bs・Be・Bf・Tsを除く)
入力 CL=14h
AX=モード指定
0010h: 行間空き25行
0011h: 20/25行(デフォルト)
出力 レジスタ変化なし
解説 o 行間空き25行表示モードと、通常の20/25行表示モードを切り替える。
MS-DOS 5.0では、PC-H98のみ対応。MS-DOS 5.0A以降では、PC-H98, PC-98GS,
PC-9821(Bp・Bs・Be・Bf・Tsを除く)に対応。対応外の機種ではなにもしない。
u モードの切換は以下のエスケープシーケンスでも行える。(Undocumented)
-----------+-----------------------------
エスケープシーケンス|モード
-----------+-----------------------------
ESC+"[?3h" |行間空き25行
ESC+"[?3l" |20/25行
-----------+-----------------------------
o 行間空き25行モード時、キーボードからの[CTRL]+[f・6]入力や、エスケープ
シーケンスESC+"[>3h"で20行モードへの切換はできない。
o PC-98GS,PC-9821(Bp・Bs・Be・Bf・Tsを除く)では、行間空き25行モードを指定
すると水平走査周波数は31.47kHzに設定される。20/25行モードを指定する
と、必ず24.83kHzに設定されてしまう(起動時の水平走査周波数が31.47kHzの
ときも)。
o PC-H98では、専用ディスプレイ使用時のノーマルモード(水平走査周波数
31.47kHz)時のみ有効。PC-H98のハイレゾモードとPC-H98S model8では、
本ファンクションを実行しても行間空き25行に切り替えられない。
ただし、AX=0010hのとき画面がクリアされる。AX=0011hではなにも起らない。
関連 0060:05D8h
INT 18h - Function 2Ah
INT 18h - Function 30h
INT DCh - Function 14h Subfunction 8010h
INT DCh - Function 14h Subfunction 8000h
分類 拡張MS-DOS
名前 拡張アトリビュートモードの取得
Undocumented
対象 MS-DOS 3.3D:IO.SYS
MS-DOS 5.0, 5.0A:IO.SYS
PC-H98(ノーマル・ハイレゾ)
入力 CL=14h
AX=8000h
出力 AX=モード設定状態
0001h: PC(互換)モード
0000h: EGHモード
解説 o INT DCh - Function 14h Subfunction 0000h,0001hで設定した
拡張アトリビュートの設定状態を取得する。
PC-H98以外の機種ではなにもしない。
u MS-DOSワークエリアからではなく、INT 18h - Function 2Bhで状態取得した
結果を通知する。
関連 0060:05D6h
INT DCh - Function 14h Subfunction 0000h,0001h
INT 18h - Function 2Bh
INT DCh - Function 14h Subfunction 8010h
分類 拡張MS-DOS
名前 テキストモードの取得
Undocumented
対象 MS-DOS 5.0, 5.0A:IO.SYS
PC-H98(ノーマル), PC-98GS, PC-9821(Bp・Bs・Be・Bf・Tsを除く)
入力 CL=14h
AX=8010h
出力 AX=モード設定状態
0001h: 20/25行
0000h: 行間空き25行
解説 o INT DCh - Function 14h Subfunction 0010h,0011hで設定した
テキストモードの設定状態を取得する。
MS-DOS 5.0では、PC-H98のみ対応。MS-DOS 5.0A以降では、PC-H98, PC-98GS,
PC-9821(Bp・Bs・Be・Bf・Tsを除く)に対応。対応外の機種ではなにもしない。
u MS-DOSワークエリアからではなく、INT 18h - Function 2Bhで状態取得した
結果を通知する。
関連 0060:05D8h
INT DCh - Function 14h Subfunction 0010h,0011h
INT 18h - Function 2Bh
INT 18h - Function 31h
INT DCh - Function 14h Subfunction 0000h(LT・HA)
分類 拡張MS-DOS
名前 画面最上行の待避と文字表示
Undocumented
対象 MS-DOS 3.1(PC-98LT・HA):IO.SYS
入力 CL=14h
AX=0000h
ES:BX=文字列の先頭アドレス(文字列の最後は'$')
出力 レジスタ変化なし
解説 o 画面最上行の文字を待避し、その行全体をクリアする。
指定された文字列を最上行に反転表示する。
「ドライブ A:(B:)に対応するディスクを挿入後,適当なキーを
押してください」の表示に利用している。
o PC-98LT・HAだけの機能。
関連 INT DCh - Function 12h(LT・HA)
INT DCh - Function 14h Subfunction 0001h(LT・HA)
INT DCh - Function 14h Subfunction 0001h(LT・HA)
分類 拡張MS-DOS
名前 画面最上行の復帰
Undocumented
対象 MS-DOS 3.1(PC-98LT・HA):IO.SYS
入力 CL=14h
AX=0001h
出力 レジスタ変化なし
解説 o INT DCh - Function 14h Subfunction 0000hで待避しておいた画面最上行の
文字を復帰させる。ただし、Subfunction 0000hで文字が待避されていない
とき、または本ファンクションで文字が復帰されたあとに再度本ファンク
ションを実行したときはなにもしない。
o PC-98LT・HAだけの機能。
関連 INT DCh - Function 14h Subfunction 0000h(LT・HA)
INT DCh - Function 15h Subfunction 0000h
分類 拡張MS-DOS
名前 内部リビジョン番号の取得
Undocumented
対象 MS-DOS 5.0, 5.0A:IO.SYS
入力 CL=15h
AX=0000h
出力 AH=00h
AL=内部リビジョン番号
解説 o ALレジスタに内部リビジョン番号を返す。内部リビジョン番号は、
ひとつの製品のなかで最初に出荷されるバージョンに01hが付与される。
内部的な変更が行われるたびに、順次大きな数が与えられる。
原則として、INT DCh - Function 12hで得られる製品番号が更新される
たびに内部リビジョン番号も01hに戻るが、MS-DOS 5.0A-Hでは、
内部リビジョン番号とともに製品番号が変化している製品がある。
表[MS-DOSバージョン−製品番号−内部リビジョン番号の対応]参照。
o INT DCh - Function 15hは、Subfunction 0000hのみ存在する。
AX=0000h以外ではなにもしない。
関連 0060:0022h
INT DCh - Function 12h
INT DCh - Function 73h
分類 拡張MS-DOS
名前 MS-DOSドライブ名−DA/UA対照リストの取得
Undocumented
対象 MS-DOS 3.1(PC-98HA):IO.SYS
入力 CL=73h
AX=0000h
DS:DX=リスト出力バッファ(バッファサイズ20hバイト)
出力 AX=リターンコード
0000h: 正常終了
FFFFh: AX≠0000hで呼び出された
解説 o MS-DOSのドライブがどのディスク装置に割り当てられているかを示す
リストをDS:DXで指定したメモリに書き込む。
u 原則として、IO.SYS内蔵のブロックデバイスの情報が書き込ま
れる。デバイスドライバによって追加されたドライブの情報は得られない。
例外として、MS-DOS付属のRAMDISK.SYSでは、その情報をこのファンク
ションで得ることができる。
o PC-98HAだけの機能。
表 DA/UAリスト出力バッファの構造
-------+--------------- -------+---------------
オフセット |内容 オフセット |内容
-------+--------------- -------+---------------
+00h |A:アトリビュート +10h |I:アトリビュート
+01h |A:DA/UA +11h |I:DA/UA
+02h |B:アトリビュート +12h |J:アトリビュート
+03h |B:DA/UA +13h |J:DA/UA
+04h |C:アトリビュート +14h |K:アトリビュート
+05h |C:DA/UA +15h |K:DA/UA
+06h |D:アトリビュート +16h |L:アトリビュート
+07h |D:DA/UA +17h |L:DA/UA
+08h |E:アトリビュート +18h |M:アトリビュート
+09h |E:DA/UA +19h |M:DA/UA
+0Ah |F:アトリビュート +1Ah |N:アトリビュート
+0Bh |F:DA/UA +1Bh |N:DA/UA
+0Ch |G:アトリビュート +1Ch |O:アトリビュート
+0Dh |G:DA/UA +1Dh |O:DA/UA
+0Eh |H:アトリビュート +1Eh |P:アトリビュート
+0Fh |H:DA/UA +1Fh |P:DA/UA
-------+--------------- -------+---------------
* CONFIG.SYSで追加したブロックデバイスは、原則としてDA/UAの
値がセットされない。ただし、RAM DISK(RAMDISK.SYS)は例外。
[DA/UAの意味]
-------+-------------------------------------------
DA/UA |装置の種類
-------+-------------------------------------------
00h |ドライブなし(後続するドライブがない場合)
70〜71h|FDD, RAMドライブ
D0h |ROMドライブ
D1h |JEIDAメモリカードドライブ
E0h |RAMDISK(RAMDISK.SYS)
E1h |BP RAM DISK(BPRAM.SYS)
FFh |ドライブなし(後続するドライブがある場合)
-------+-------------------------------------------
* DA/UA=D0hのドライブにBIOSでアクセスするには、INT 1Fh - Function 94h,
95hを用いる。
* DA/UA=D1hのドライブにBIOSでアクセスするには、INT 1Fh - Function B4〜
B8hを用いる。
* DA/UA=E0hのRAMDISKにBIOSでアクセスする場合、INT 1Bh - Function 05h,
06h(RAMDISK)を用いる。
[アトリビュートの意味]
-------+-------------------------------------------
値 |意味
-------+-------------------------------------------
00h |FDD, ROMドライブ, RAMDISK, BP RAM DISK
01h |FDD(1台の物理ドライブに2台の論理ドライブが
|割り当てられているとき)
02h |RAMドライブ
-------+-------------------------------------------
関連 0060:0038h
0060:006C〜007Bh
0000:0488h
INT DCh - Function 74h
分類 拡張MS-DOS
名前 BP RAMアクセス状態の指定と取得
Undocumented
対象 MS-DOS 3.1(PC-98HA):IO.SYS
入力 CL=74h
AX=機能指定
0000h: BP RAMアクセス不可能
0001h: BP RAMアクセス可能
8000h: BP RAMアクセス状態取得
出力 AX=リターンコード
0000h: BP RAMアクセス不可能
0001h: BP RAMアクセス可能
FFFFh: AX=0000h,0001h,8000h以外の値で実行した
解説 o BPRAM.SYS(BPRAMを利用したRAMディスクドライバ)が提供するRAMディスクに
アクセス可能にするかどうかを設定する。BP RAMは、PC-98HAに内蔵されて
いるリチウム電池でバックアップされた不揮発性メモリである。
o BP RAMアクセス不可能に設定すると、BPRAM.SYSの作成したドライブに
対して読み書きができない。
BP RAMアクセス可能に設定すると、BPRAM.SYSの作成したドライブは
一般的なRAMディスクドライブのように使用することができる。
o BP RAMドライブは、スケジューラのデータを保存するために使用されて
いる。通常はBP RAMアクセス不可能の状態に設定されているので、
ユーザからはドライブとして見えない。
o PC-98HAだけの機能。
関連 0060:0046h
INT DCh - Function 80h Subfunction 0000h
分類 拡張MS-DOS
名前 ディスクパーティション数等の取得
Undocumented
対象 MS-DOS 3.1(PS98-011):IO.SYS
MS-DOS 3.3(all):IO.SYS
MS-DOS 5.0, 5.0A:IO.SYS
入力 CL=80h
AX=0000h
DS:DX=バッファアドレス(バッファサイズ100hバイト)
出力 レジスタ変化なし
解説 o 接続されているハードディスクのアクティブパーティション数、
各パーティションの先頭物理セクタ番号等を示すリストを、
DS:DXで指定したメモリに書き込む。
u 主な処理内容は次の通り。
DS:DXからの100hバイトを0クリアし、IO.SYSワークエリアの各部
(DOSのバージョンによって異なる)からデータをコピーする。
o PS98-011は、SCSI接続機器をサポートしていない。
SASI HD #2,#3は、PC-H98のみサポート。
関連 0060:00ACh
0060:1A50h
0060:1B50h
0060:1D29h
0060:1DA9h
0060:2A88h
0060:2B48h
表 バッファ構造
-------+------------------------------------------------------------
オフセット |内容
-------+------------------------------------------------------------
+00h |SASI・IDE HD #0 アクティブパーティション数
+01h |SASI・IDE HD #1 アクティブパーティション数
+02h |ESDI HD #2 アクティブパーティション数
+03h |SASI HD #3 アクティブパーティション数
+04h |SCSI HD/MO #0 アクティブパーティション数
+05h |SCSI HD/MO #1 アクティブパーティション数
+06h |SCSI HD/MO #2 アクティブパーティション数
+07h |SCSI HD/MO #3 アクティブパーティション数
+08h |SCSI HD/MO #4 アクティブパーティション数
+09h |SCSI HD/MO #5 アクティブパーティション数
+0Ah |SCSI HD/MO #6 アクティブパーティション数
+0Bh |00(未使用)
-------+------------------------------------------------------------
* 拡張フォーマットされたハードディスクまたはMO内のMS-DOSアクティブ
パーティションの数。
* 3.5"MOは常に1、5"MOは常に4。
バッファ構造(続き)
-------+------------------------------------------------------------
オフセット |内容
-------+------------------------------------------------------------
+0Ch |1MB FD 論理ドライブ数
+0Dh |640KB FD 論理ドライブ数
+0Eh |SASI HD 論理ドライブ数
+0Fh |SCSI HD 論理ドライブ数
-------+------------------------------------------------------------
* SCSI HD論理ドライブ数の中に、3.5"MO、5"MOの論理ドライブ数は
含まれない。
* FDD 1台のみの状態で、1台のFDDに2個の論理ドライブが割り当て
られているとき、論理ドライブ数は2になる。
バッファ構造(続き)
--------+-----------------------------------------------------------
オフセット |内容
--------+-----------------------------------------------------------
+10〜13h|SASI HD #0 アクティブパーティション1の先頭物理セクタ番号
+14〜17h|SASI HD #0 アクティブパーティション2の先頭物理セクタ番号
+18〜1Bh|SASI HD #0 アクティブパーティション3の先頭物理セクタ番号
+1C〜1Fh|SASI HD #0 アクティブパーティション4の先頭物理セクタ番号
+20〜2Fh|SASI HD #1 アクティブパーティション1〜4の先頭物理セクタ番号
+30〜3Fh|SASI HD #2 アクティブパーティション1〜4の先頭物理セクタ番号
+40〜4Fh|SASI HD #3 アクティブパーティション1〜4の先頭物理セクタ番号
+50〜5Fh|SCSI HD/MO #0 アクティブパーティション1〜4の先頭物理セクタ番号
+60〜5Fh|SCSI HD/MO #1 アクティブパーティション1〜4の先頭物理セクタ番号
+70〜7Fh|SCSI HD/MO #2 アクティブパーティション1〜4の先頭物理セクタ番号
+80〜8Fh|SCSI HD/MO #3 アクティブパーティション1〜4の先頭物理セクタ番号
+90〜9Fh|SCSI HD/MO #4 アクティブパーティション1〜4の先頭物理セクタ番号
+A0〜AFh|SCSI HD/MO #5 アクティブパーティション1〜4の先頭物理セクタ番号
+B0〜BFh|SCSI HD/MO #6 アクティブパーティション1〜4の先頭物理セクタ番号
+C0〜CFh|00(未使用)
+D0〜FFh|00(未使用)
--------+-----------------------------------------------------------
* 3.5"MOの先頭物理セクタ番号は常に0。
INT DCh - Function 80h Subfunction 0001h
分類 拡張MS-DOS
名前 不明
Undocumented
対象 MS-DOS 3.1(PS98-011):IO.SYS
MS-DOS 3.3(all):IO.SYS
MS-DOS 5.0, 5.0A:IO.SYS
入力 CL=80h
AX=0001h
DS:DX=バッファアドレス(バッファサイズ100hバイト)
出力 レジスタ変化なし
解説 o IO.SYSのワークエリアのうち、画面・キーボード制御関係の部分をDS:DXで
指定したメモリに書き込む。
u 主な処理内容は次の通り。
DS:DXからの100hバイトを0クリアし、DS:DXに0060:0106〜011Fh(1Ahバイト)を
コピーする。ただし、0060:011FhのワークエリアはサイズがWORDであるため、
このファンクションでは下位8ビットだけがコピーされることになる。
関連 0060:0106〜011Fh
表 バッファに格納される情報(詳細は0060:0106〜011Fh参照)
-------+-------+---------------------------------------------------
オフセット |幅 |内容
-------+-------+---------------------------------------------------
+00h |BYTE |特殊入力モード
+01h |BYTE |[CTRL]+[P]・[N]モード
+02h |BYTE |未使用(DOS 5.0A)
+03h |BYTE |特殊入力モード時の16進数変換用ワークエリア
+04h |WORD |特殊入力モード時に使用するサブルーチンのオフセット
+06h |BYTE |[CTRL]+ファンクションキーモード
+07h |BYTE |未使用(DOS 5.0A)
+08h |BYTE |未使用(DOS 5.0A)
+09h |BYTE |未使用(DOS 5.0A)
+0Ah |BYTE |カーソル位置Y座標
+0Bh |BYTE |ファンクション表示状態フラグ
+0Ch |BYTE |スクロール範囲下限
+0Dh |BYTE |画面ライン数
+0Eh |BYTE |消去アトリビュート
+0Fh |BYTE |漢字上位バイト格納フラグ
+10h |BYTE |漢字上位バイト格納用ワークエリア
+11h |BYTE |行折り返しモード
+12h |BYTE |スクロールスピード
+13h |BYTE |消去キャラクタ
+14h |BYTE |未使用(DOS 5.0A)
+15h |BYTE |カーソル表示状態フラグ
+16h |BYTE |カーソル位置のX座標
+17h |BYTE |表示アトリビュート
+18h |BYTE |スクロール範囲上限
+19h |WORD |スクロール時のウェイト値(このファンクションではこの
| |ワークエリアの下位1バイトしかコピーしない)
-------+-------+---------------------------------------------------
INT DCh - Function 80h Subfunction 8000h
分類 拡張MS-DOS
名前 BRANCH 4670仮想ドライブの有無
Undocumented
対象 MS-DOS 3.1(PS98-011):IO.SYS
MS-DOS 3.3(all):IO.SYS
MS-DOS 5.0, 5.0A:IO.SYS
入力 CL=80h
AX=8000h
出力 AL=BRANCH 4670仮想ドライブの有無
00h : なし
00h以外: あり
解説 o BRANCH 4670仮想ドライブの有無を返す。
BRANCH 4670仮想ドライブは、4台のMS-DOS論理ドライブとして組み込まれる。
関連 0060:19FBh
INT DCh - Function 80h Subfunction 8001h
分類 拡張MS-DOS
名前 不明
Undocumented
対象 MS-DOS 3.1(PS98-011):IO.SYS
MS-DOS 3.3(all):IO.SYS
MS-DOS 5.0, 5.0A:IO.SYS
入力 CL=80h
AX=8001h
出力 AL=0060:27D2h
解説 o ALレジスタに0060:27D2hの値を入れてリターンする。
関連
INT DCh - Function 80h Subfunction 8002h
分類 拡張MS-DOS
名前 MS-DOS付属日本語入力FEPの組み込み状況
Undocumented
対象 MS-DOS 3.1(PS98-011):IO.SYS
MS-DOS 3.3(all):IO.SYS
MS-DOS 5.0, 5.0A:IO.SYS
入力 CL=80h
AX=8002h
出力 AL=MS-DOS付属日本語入力FEPの組み込み状況
00h: 組み込まれていない
01h: 組み込まれている
解説 o MS-DOS付属日本語入力FEPの組み込み状況を返す。
関連 0060:1E50h
INT DCh - Function 81h Subfunction 0000h
分類 拡張MS-DOS
名前 実装プロテクトメモリ容量の取得
Undocumented
対象 MS-DOS 3.3(all):IO.SYS
MS-DOS 5.0, 5.0A:IO.SYS
入力 CL=81h
AX=0000h
出力 AL=実装プロテクトメモリ容量(128KB単位)
解説 o 100000h(1Mバイト)〜FFFFFFh(16Mバイト-1)のアドレスに実装されている
プロテクトメモリの容量を返す。
MS-DOSは起動時に、プロテクトメモリ容量をIO.SYSワークエリア
(0060:0031h)に保存している。このファンクションはそれを読み出して返す。
たとえば、1Mバイトのプロテクトメモリが実装されている場合、08hが返る。
o INT DCh - Function 81h Subfunction 0001hでメモリを獲得した場合も、
このファンクションで得られる値は変化しない。
関連 0060:0031h
INT DCh - Function 81h Subfunction 0001h
分類 拡張MS-DOS
名前 プロテクトメモリのアロケート要求
Undocumented
対象 MS-DOS 3.3(all):IO.SYS
MS-DOS 5.0, 5.0A:IO.SYS
入力 CL=81h
AX=0001h
* AX≠0000h ならなんでも良い
BX=アロケートしようとするプロテクトメモリ容量(128KB単位)
出力 AX=0000h アロケート完了
BX = アロケートされたメモリの開始アドレス(64KB単位)
返される値は10h(アドレス100000h)以上
DX = アロケートされたメモリの終了アドレス(64KB単位)
AX=0001h 指定された容量の利用可能なプロテクトメモリがない
BX = アロケート可能なメモリの最大容量(128KB単位)
AX=FFFFh プロテクトメモリが実装されていない
解説 o プロテクトメモリをアプリケーションに割り当てる。
メモリの上位アドレスから順に割り付ける。
メモリを取得すると0000:0401h(BYTE)の値を減じる。
u 一度獲得したメモリを開放するファンクションはない。
関連 0000:0401h
INT DCh - Function 82h Subfunction 0000h
分類 拡張MS-DOS
名前 利用可能なプロテクトメモリ容量とアドレス範囲の取得
Undocumented
対象 MS-DOS 3.3B,C,D(PS98-017・019・1002):IO.SYS
MS-DOS 5.0, 5.0A:IO.SYS
入力 CL=82h
AX=0000h
出力 AX=未使用プロテクトメモリ容量(128KB単位)
* ノーマルモードでは、0000:0401hの値が返る
* ハイレゾモードでは、0000:0401h-2の値が返る(0000:0401h<2の
ときは0)
BX=未使用プロテクトメモリ領域の最小アドレス(64KB単位)
* ノーマルモードでは、必ず10h(=100000h)が返る
* ハイレゾモードでは、必ず14h(=140000h)が返る
DX=未使用プロテクトメモリ領域の最大アドレス+1(64KB単位)
* 0000:0401h*2+10hの値が返る
解説 o 100000h(1Mバイト)〜FFFFFFh(16Mバイト-1)のアドレスに実装されている
未使用プロテクトメモリ容量と、そのアドレスの範囲を返す。
未使用プロテクトメモリ容量の管理は、0000:0401hを使用する。
o たとえば、1Mバイトの未使用プロテクトメモリがある場合以下のようになる。
ノーマルモードでは、AX=08h(08h*128K=1MB)、BX=10h(最小アドレス=
100000h)、DX=20h(最大アドレス=200000h-1)が返る。
ハイレゾモードでは、AX=06h(06h*128K=768KB)、BX=14h(最小アドレス=
140000h)、DX=20h(最大アドレス+1=200000h)が返る。
u MS-DOS 3.3B,Cでは、0000:0401hの参照をワードで行っている。このため、
状況によっては正常に動作しないことがある。MS-DOS 3.3D以降では修正
されている。
o AX=0000h以外で実行すると、なにもせずにAX=FFFFhでリターンする。
関連 0000:0401h